﻿2026-06-20T11:21:58.3840138Z ##[group]Run ./traceable-reqs check --json
2026-06-20T11:21:58.3841164Z [36;1m./traceable-reqs check --json[0m
2026-06-20T11:21:58.3855447Z shell: /usr/bin/bash -e {0}
2026-06-20T11:21:58.3856192Z ##[endgroup]
2026-06-20T11:21:58.4478077Z {
2026-06-20T11:21:58.4479212Z   "schemaVersion": 1,
2026-06-20T11:21:58.4480189Z   "summary": {
2026-06-20T11:21:58.4481101Z     "requirementCount": 273,
2026-06-20T11:21:58.4482197Z     "completeCount": 273,
2026-06-20T11:21:58.4483241Z     "incompleteCount": 0,
2026-06-20T11:21:58.4484253Z     "findingCount": 0
2026-06-20T11:21:58.4485155Z   },
2026-06-20T11:21:58.4485939Z   "requirements": [
2026-06-20T11:21:58.4486725Z     {
2026-06-20T11:21:58.4487960Z       "id": "REQ-API-1",
2026-06-20T11:21:58.4489462Z       "title": "api prefix and adapter_name on every machinery invocation",
2026-06-20T11:21:58.4491055Z       "requiredStages": [
2026-06-20T11:21:58.4492048Z         "impl",
2026-06-20T11:21:58.4492901Z         "unit",
2026-06-20T11:21:58.4493744Z         "int"
2026-06-20T11:21:58.4494619Z       ],
2026-06-20T11:21:58.4495424Z       "stages": {
2026-06-20T11:21:58.4496291Z         "doc": {
2026-06-20T11:21:58.4497200Z           "complete": false,
2026-06-20T11:21:58.4498239Z           "evidence": []
2026-06-20T11:21:58.4499274Z         },
2026-06-20T11:21:58.4500089Z         "impl": {
2026-06-20T11:21:58.4500971Z           "complete": true,
2026-06-20T11:21:58.4501947Z           "evidence": [
2026-06-20T11:21:58.4502875Z             {
2026-06-20T11:21:58.4503790Z               "path": "crates/spt/src/api/mod.rs",
2026-06-20T11:21:58.4505035Z               "line": 15
2026-06-20T11:21:58.4505960Z             }
2026-06-20T11:21:58.4506796Z           ]
2026-06-20T11:21:58.4507438Z         },
2026-06-20T11:21:58.4508193Z         "int": {
2026-06-20T11:21:58.4514107Z           "complete": true,
2026-06-20T11:21:58.4514860Z           "evidence": [
2026-06-20T11:21:58.4515529Z             {
2026-06-20T11:21:58.4516268Z               "path": "crates/spt/tests/contract_e2e.rs",
2026-06-20T11:21:58.4517241Z               "line": 13
2026-06-20T11:21:58.4517912Z             }
2026-06-20T11:21:58.4518501Z           ]
2026-06-20T11:21:58.4519174Z         },
2026-06-20T11:21:58.4519740Z         "unit": {
2026-06-20T11:21:58.4520370Z           "complete": true,
2026-06-20T11:21:58.4521094Z           "evidence": [
2026-06-20T11:21:58.4521748Z             {
2026-06-20T11:21:58.4522454Z               "path": "crates/spt/src/api/mod.rs",
2026-06-20T11:21:58.4523346Z               "line": 717
2026-06-20T11:21:58.4524029Z             },
2026-06-20T11:21:58.4524619Z             {
2026-06-20T11:21:58.4525377Z               "path": "crates/spt/src/api/mod.rs",
2026-06-20T11:21:58.4526638Z               "line": 804
2026-06-20T11:21:58.4527573Z             }
2026-06-20T11:21:58.4528410Z           ]
2026-06-20T11:21:58.4529300Z         }
2026-06-20T11:21:58.4530068Z       }
2026-06-20T11:21:58.4530872Z     },
2026-06-20T11:21:58.4531634Z     {
2026-06-20T11:21:58.4532403Z       "id": "REQ-API-2",
2026-06-20T11:21:58.4534026Z       "title": "The api subcommand surface (bind/listen/poll/state/worker/boundary/...)",
2026-06-20T11:21:58.4535886Z       "requiredStages": [
2026-06-20T11:21:58.4536869Z         "impl",
2026-06-20T11:21:58.4537727Z         "unit",
2026-06-20T11:21:58.4538585Z         "int"
2026-06-20T11:21:58.4539503Z       ],
2026-06-20T11:21:58.4540299Z       "stages": {
2026-06-20T11:21:58.4541157Z         "doc": {
2026-06-20T11:21:58.4542062Z           "complete": false,
2026-06-20T11:21:58.4543110Z           "evidence": []
2026-06-20T11:21:58.4544082Z         },
2026-06-20T11:21:58.4544700Z         "impl": {
2026-06-20T11:21:58.4545334Z           "complete": true,
2026-06-20T11:21:58.4546079Z           "evidence": [
2026-06-20T11:21:58.4546742Z             {
2026-06-20T11:21:58.4547477Z               "path": "crates/spt-store/src/history.rs",
2026-06-20T11:21:58.4548731Z               "line": 17
2026-06-20T11:21:58.4549757Z             },
2026-06-20T11:21:58.4550363Z             {
2026-06-20T11:21:58.4551412Z               "path": "crates/spt/src/api/delivery.rs",
2026-06-20T11:21:58.4552331Z               "line": 20
2026-06-20T11:21:58.4553003Z             },
2026-06-20T11:21:58.4554033Z             {
2026-06-20T11:21:58.4555060Z               "path": "crates/spt/src/api/delivery.rs",
2026-06-20T11:21:58.4556033Z               "line": 142
2026-06-20T11:21:58.4556715Z             },
2026-06-20T11:21:58.4557307Z             {
2026-06-20T11:21:58.4558028Z               "path": "crates/spt/src/api/reporting.rs",
2026-06-20T11:21:58.4559033Z               "line": 24
2026-06-20T11:21:58.4559744Z             },
2026-06-20T11:21:58.4560332Z             {
2026-06-20T11:21:58.4561228Z               "path": "crates/spt/src/api/reporting.rs",
2026-06-20T11:21:58.4562177Z               "line": 41
2026-06-20T11:21:58.4562844Z             },
2026-06-20T11:21:58.4563436Z             {
2026-06-20T11:21:58.4564155Z               "path": "crates/spt/src/api/reporting.rs",
2026-06-20T11:21:58.4565089Z               "line": 213
2026-06-20T11:21:58.4565763Z             },
2026-06-20T11:21:58.4566349Z             {
2026-06-20T11:21:58.4567065Z               "path": "crates/spt/src/api/reporting.rs",
2026-06-20T11:21:58.4567998Z               "line": 255
2026-06-20T11:21:58.4568682Z             },
2026-06-20T11:21:58.4569345Z             {
2026-06-20T11:21:58.4570062Z               "path": "crates/spt/src/api/reporting.rs",
2026-06-20T11:21:58.4570981Z               "line": 334
2026-06-20T11:21:58.4571650Z             },
2026-06-20T11:21:58.4572241Z             {
2026-06-20T11:21:58.4572953Z               "path": "crates/spt/src/api/reporting.rs",
2026-06-20T11:21:58.4573875Z               "line": 397
2026-06-20T11:21:58.4574573Z             },
2026-06-20T11:21:58.4575159Z             {
2026-06-20T11:21:58.4575868Z               "path": "crates/spt/src/api/reporting.rs",
2026-06-20T11:21:58.4576810Z               "line": 436
2026-06-20T11:21:58.4577482Z             },
2026-06-20T11:21:58.4578065Z             {
2026-06-20T11:21:58.4578763Z               "path": "crates/spt/src/api/worker.rs",
2026-06-20T11:21:58.4579735Z               "line": 17
2026-06-20T11:21:58.4580416Z             },
2026-06-20T11:21:58.4580999Z             {
2026-06-20T11:21:58.4581681Z               "path": "crates/spt/src/api/worker.rs",
2026-06-20T11:21:58.4582583Z               "line": 30
2026-06-20T11:21:58.4583241Z             },
2026-06-20T11:21:58.4583823Z             {
2026-06-20T11:21:58.4584493Z               "path": "crates/spt/src/api/worker.rs",
2026-06-20T11:21:58.4585389Z               "line": 63
2026-06-20T11:21:58.4586043Z             },
2026-06-20T11:21:58.4586635Z             {
2026-06-20T11:21:58.4587327Z               "path": "crates/spt/src/api/worker.rs",
2026-06-20T11:21:58.4588223Z               "line": 77
2026-06-20T11:21:58.4588891Z             }
2026-06-20T11:21:58.4589554Z           ]
2026-06-20T11:21:58.4590122Z         },
2026-06-20T11:21:58.4590699Z         "int": {
2026-06-20T11:21:58.4591324Z           "complete": true,
2026-06-20T11:21:58.4592040Z           "evidence": [
2026-06-20T11:21:58.4592703Z             {
2026-06-20T11:21:58.4593409Z               "path": "crates/spt/tests/contract_e2e.rs",
2026-06-20T11:21:58.4594330Z               "line": 14
2026-06-20T11:21:58.4594995Z             },
2026-06-20T11:21:58.4595587Z             {
2026-06-20T11:21:58.4596303Z               "path": "crates/spt/tests/contract_e2e.rs",
2026-06-20T11:21:58.4597223Z               "line": 187
2026-06-20T11:21:58.4597901Z             }
2026-06-20T11:21:58.4598482Z           ]
2026-06-20T11:21:58.4599126Z         },
2026-06-20T11:21:58.4599689Z         "unit": {
2026-06-20T11:21:58.4600335Z           "complete": true,
2026-06-20T11:21:58.4601064Z           "evidence": [
2026-06-20T11:21:58.4601718Z             {
2026-06-20T11:21:58.4602431Z               "path": "crates/spt-store/src/history.rs",
2026-06-20T11:21:58.4603512Z               "line": 82
2026-06-20T11:21:58.4604309Z             },
2026-06-20T11:21:58.4604996Z             {
2026-06-20T11:21:58.4606009Z               "path": "crates/spt/src/api/delivery.rs",
2026-06-20T11:21:58.4607014Z               "line": 279
2026-06-20T11:21:58.4607856Z             },
2026-06-20T11:21:58.4608548Z             {
2026-06-20T11:21:58.4609492Z               "path": "crates/spt/src/api/reporting.rs",
2026-06-20T11:21:58.4610575Z               "line": 709
2026-06-20T11:21:58.4611343Z             },
2026-06-20T11:21:58.4612035Z             {
2026-06-20T11:21:58.4612901Z               "path": "crates/spt/src/api/reporting.rs",
2026-06-20T11:21:58.4613943Z               "line": 720
2026-06-20T11:21:58.4614777Z             },
2026-06-20T11:21:58.4615479Z             {
2026-06-20T11:21:58.4616546Z               "path": "crates/spt/src/api/reporting.rs",
2026-06-20T11:21:58.4617642Z               "line": 873
2026-06-20T11:21:58.4655664Z             },
2026-06-20T11:21:58.4656398Z             {
2026-06-20T11:21:58.4657195Z               "path": "crates/spt/src/api/reporting.rs",
2026-06-20T11:21:58.4658128Z               "line": 919
2026-06-20T11:21:58.4658829Z             },
2026-06-20T11:21:58.4659515Z             {
2026-06-20T11:21:58.4660225Z               "path": "crates/spt/src/api/worker.rs",
2026-06-20T11:21:58.4661124Z               "line": 143
2026-06-20T11:21:58.4661801Z             },
2026-06-20T11:21:58.4662391Z             {
2026-06-20T11:21:58.4663077Z               "path": "crates/spt/src/api/worker.rs",
2026-06-20T11:21:58.4663987Z               "line": 187
2026-06-20T11:21:58.4664663Z             }
2026-06-20T11:21:58.4665245Z           ]
2026-06-20T11:21:58.4665806Z         }
2026-06-20T11:21:58.4666362Z       }
2026-06-20T11:21:58.4666905Z     },
2026-06-20T11:21:58.4667468Z     {
2026-06-20T11:21:58.4668047Z       "id": "REQ-API-3",
2026-06-20T11:21:58.4669017Z       "title": "commune/signoff are file-drops, not commands",
2026-06-20T11:21:58.4670061Z       "requiredStages": [
2026-06-20T11:21:58.4670747Z         "impl",
2026-06-20T11:21:58.4671360Z         "unit",
2026-06-20T11:21:58.4671961Z         "int"
2026-06-20T11:21:58.4672552Z       ],
2026-06-20T11:21:58.4673116Z       "stages": {
2026-06-20T11:21:58.4673719Z         "doc": {
2026-06-20T11:21:58.4674360Z           "complete": false,
2026-06-20T11:21:58.4675090Z           "evidence": []
2026-06-20T11:21:58.4675768Z         },
2026-06-20T11:21:58.4676357Z         "impl": {
2026-06-20T11:21:58.4676999Z           "complete": true,
2026-06-20T11:21:58.4677718Z           "evidence": [
2026-06-20T11:21:58.4678376Z             {
2026-06-20T11:21:58.4679162Z               "path": "crates/spt-live/src/ingest.rs",
2026-06-20T11:21:58.4680073Z               "line": 27
2026-06-20T11:21:58.4680755Z             },
2026-06-20T11:21:58.4681345Z             {
2026-06-20T11:21:58.4682063Z               "path": "crates/spt/src/api/reporting.rs",
2026-06-20T11:21:58.4682988Z               "line": 566
2026-06-20T11:21:58.4683647Z             }
2026-06-20T11:21:58.4684217Z           ]
2026-06-20T11:21:58.4684768Z         },
2026-06-20T11:21:58.4685317Z         "int": {
2026-06-20T11:21:58.4685928Z           "complete": true,
2026-06-20T11:21:58.4686628Z           "evidence": [
2026-06-20T11:21:58.4687254Z             {
2026-06-20T11:21:58.4687950Z               "path": "crates/spt/tests/contract_e2e.rs",
2026-06-20T11:21:58.4688861Z               "line": 261
2026-06-20T11:21:58.4689589Z             }
2026-06-20T11:21:58.4690143Z           ]
2026-06-20T11:21:58.4690690Z         },
2026-06-20T11:21:58.4691267Z         "unit": {
2026-06-20T11:21:58.4691886Z           "complete": true,
2026-06-20T11:21:58.4692584Z           "evidence": [
2026-06-20T11:21:58.4693228Z             {
2026-06-20T11:21:58.4693911Z               "path": "crates/spt-live/src/ingest.rs",
2026-06-20T11:21:58.4694805Z               "line": 280
2026-06-20T11:21:58.4695456Z             },
2026-06-20T11:21:58.4696024Z             {
2026-06-20T11:21:58.4696729Z               "path": "crates/spt/src/api/reporting.rs",
2026-06-20T11:21:58.4697628Z               "line": 948
2026-06-20T11:21:58.4698262Z             }
2026-06-20T11:21:58.4699125Z           ]
2026-06-20T11:21:58.4699684Z         }
2026-06-20T11:21:58.4700225Z       }
2026-06-20T11:21:58.4700765Z     },
2026-06-20T11:21:58.4701289Z     {
2026-06-20T11:21:58.4701841Z       "id": "REQ-API-4",
2026-06-20T11:21:58.4707533Z       "title": "api resolves the adapter manifest (+ profile + install dir) from `--adapter name:profile` via the registry when `--manifest` is omitted; `--manifest` becomes an optional OVERRIDE (unregistered / local-dev manifests). Removes the require-both-flags redundancy — a registered adapter's live bringup / digest / capability needs only `--adapter` — and yields the precise install dir (the record's source_dir) rather than the --manifest parent, closing the copy-mode psyche-binary edge (v0.8.0)",
2026-06-20T11:21:58.4713102Z       "requiredStages": [
2026-06-20T11:21:58.4713776Z         "doc",
2026-06-20T11:21:58.4714353Z         "impl",
2026-06-20T11:21:58.4714935Z         "unit"
2026-06-20T11:21:58.4715507Z       ],
2026-06-20T11:21:58.4716064Z       "stages": {
2026-06-20T11:21:58.4716649Z         "doc": {
2026-06-20T11:21:58.4717259Z           "complete": true,
2026-06-20T11:21:58.4717956Z           "evidence": [
2026-06-20T11:21:58.4718583Z             {
2026-06-20T11:21:58.4719263Z               "path": "CONTEXT.md",
2026-06-20T11:21:58.4720021Z               "line": 149
2026-06-20T11:21:58.4720679Z             }
2026-06-20T11:21:58.4721237Z           ]
2026-06-20T11:21:58.4721780Z         },
2026-06-20T11:21:58.4722317Z         "impl": {
2026-06-20T11:21:58.4722933Z           "complete": true,
2026-06-20T11:21:58.4723614Z           "evidence": [
2026-06-20T11:21:58.4724246Z             {
2026-06-20T11:21:58.4724904Z               "path": "crates/spt/src/api/mod.rs",
2026-06-20T11:21:58.4725772Z               "line": 484
2026-06-20T11:21:58.4726396Z             }
2026-06-20T11:21:58.4726947Z           ]
2026-06-20T11:21:58.4727480Z         },
2026-06-20T11:21:58.4728019Z         "int": {
2026-06-20T11:21:58.4728629Z           "complete": false,
2026-06-20T11:21:58.4729398Z           "evidence": []
2026-06-20T11:21:58.4730037Z         },
2026-06-20T11:21:58.4730572Z         "unit": {
2026-06-20T11:21:58.4731172Z           "complete": true,
2026-06-20T11:21:58.4731858Z           "evidence": [
2026-06-20T11:21:58.4732483Z             {
2026-06-20T11:21:58.4733141Z               "path": "crates/spt/src/api/mod.rs",
2026-06-20T11:21:58.4733999Z               "line": 657
2026-06-20T11:21:58.4734650Z             },
2026-06-20T11:21:58.4735217Z             {
2026-06-20T11:21:58.4735875Z               "path": "crates/spt/src/api/mod.rs",
2026-06-20T11:21:58.4736743Z               "line": 681
2026-06-20T11:21:58.4737377Z             },
2026-06-20T11:21:58.4737940Z             {
2026-06-20T11:21:58.4738584Z               "path": "crates/spt/src/api/mod.rs",
2026-06-20T11:21:58.4739603Z               "line": 705
2026-06-20T11:21:58.4740259Z             }
2026-06-20T11:21:58.4740817Z           ]
2026-06-20T11:21:58.4741356Z         }
2026-06-20T11:21:58.4741891Z       }
2026-06-20T11:21:58.4742418Z     },
2026-06-20T11:21:58.4742948Z     {
2026-06-20T11:21:58.4743496Z       "id": "REQ-ARCH-1",
2026-06-20T11:21:58.4744301Z       "title": "Many small acyclically-layered crates",
2026-06-20T11:21:58.4745224Z       "requiredStages": [
2026-06-20T11:21:58.4745896Z         "impl"
2026-06-20T11:21:58.4746464Z       ],
2026-06-20T11:21:58.4747003Z       "stages": {
2026-06-20T11:21:58.4747587Z         "doc": {
2026-06-20T11:21:58.4748186Z           "complete": false,
2026-06-20T11:21:58.4748886Z           "evidence": []
2026-06-20T11:21:58.4749599Z         },
2026-06-20T11:21:58.4750145Z         "impl": {
2026-06-20T11:21:58.4750752Z           "complete": true,
2026-06-20T11:21:58.4751443Z           "evidence": [
2026-06-20T11:21:58.4752068Z             {
2026-06-20T11:21:58.4752732Z               "path": "crates/spt-msg/src/lib.rs",
2026-06-20T11:21:58.4753594Z               "line": 18
2026-06-20T11:21:58.4754233Z             },
2026-06-20T11:21:58.4754919Z             {
2026-06-20T11:21:58.4755578Z               "path": "crates/spt-proto/src/lib.rs",
2026-06-20T11:21:58.4756451Z               "line": 12
2026-06-20T11:21:58.4757095Z             },
2026-06-20T11:21:58.4757649Z             {
2026-06-20T11:21:58.4758309Z               "path": "crates/spt-store/src/lib.rs",
2026-06-20T11:21:58.4759247Z               "line": 12
2026-06-20T11:21:58.4759886Z             }
2026-06-20T11:21:58.4760439Z           ]
2026-06-20T11:21:58.4760974Z         },
2026-06-20T11:21:58.4761514Z         "int": {
2026-06-20T11:21:58.4762110Z           "complete": false,
2026-06-20T11:21:58.4762829Z           "evidence": []
2026-06-20T11:21:58.4763633Z         },
2026-06-20T11:21:58.4764196Z         "unit": {
2026-06-20T11:21:58.4764807Z           "complete": false,
2026-06-20T11:21:58.4765522Z           "evidence": []
2026-06-20T11:21:58.4766171Z         }
2026-06-20T11:21:58.4766706Z       }
2026-06-20T11:21:58.4767227Z     },
2026-06-20T11:21:58.4767760Z     {
2026-06-20T11:21:58.4768346Z       "id": "REQ-ARCH-2",
2026-06-20T11:21:58.4769367Z       "title": "Public SDK surface is spt-proto, spt-runtime, spt-msg",
2026-06-20T11:21:58.4770442Z       "requiredStages": [
2026-06-20T11:21:58.4771119Z         "impl"
2026-06-20T11:21:58.4771682Z       ],
2026-06-20T11:21:58.4772234Z       "stages": {
2026-06-20T11:21:58.4772831Z         "doc": {
2026-06-20T11:21:58.4773456Z           "complete": false,
2026-06-20T11:21:58.4774175Z           "evidence": []
2026-06-20T11:21:58.4774813Z         },
2026-06-20T11:21:58.4775372Z         "impl": {
2026-06-20T11:21:58.4775991Z           "complete": true,
2026-06-20T11:21:58.4776680Z           "evidence": [
2026-06-20T11:21:58.4777318Z             {
2026-06-20T11:21:58.4777995Z               "path": "crates/spt-runtime/src/lib.rs",
2026-06-20T11:21:58.4778877Z               "line": 18
2026-06-20T11:21:58.4779603Z             }
2026-06-20T11:21:58.4780162Z           ]
2026-06-20T11:21:58.4780701Z         },
2026-06-20T11:21:58.4781235Z         "int": {
2026-06-20T11:21:58.4781858Z           "complete": false,
2026-06-20T11:21:58.4782572Z           "evidence": []
2026-06-20T11:21:58.4783216Z         },
2026-06-20T11:21:58.4783773Z         "unit": {
2026-06-20T11:21:58.4784393Z           "complete": false,
2026-06-20T11:21:58.4785097Z           "evidence": []
2026-06-20T11:21:58.4785731Z         }
2026-06-20T11:21:58.4786275Z       }
2026-06-20T11:21:58.4786800Z     },
2026-06-20T11:21:58.4787325Z     {
2026-06-20T11:21:58.4787883Z       "id": "REQ-ARCH-3",
2026-06-20T11:21:58.4789272Z       "title": "Wire-protocol version independent of crate semver, N-1 compat window",
2026-06-20T11:21:58.4790516Z       "requiredStages": [
2026-06-20T11:21:58.4791199Z         "impl",
2026-06-20T11:21:58.4791776Z         "unit"
2026-06-20T11:21:58.4792342Z       ],
2026-06-20T11:21:58.4792889Z       "stages": {
2026-06-20T11:21:58.4793475Z         "doc": {
2026-06-20T11:21:58.4794086Z           "complete": false,
2026-06-20T11:21:58.4794796Z           "evidence": []
2026-06-20T11:21:58.4795453Z         },
2026-06-20T11:21:58.4796011Z         "impl": {
2026-06-20T11:21:58.4796646Z           "complete": true,
2026-06-20T11:21:58.4797337Z           "evidence": [
2026-06-20T11:21:58.4797967Z             {
2026-06-20T11:21:58.4798668Z               "path": "crates/spt-proto/src/version.rs",
2026-06-20T11:21:58.4799617Z               "line": 34
2026-06-20T11:21:58.4800270Z             },
2026-06-20T11:21:58.4800829Z             {
2026-06-20T11:21:58.4801526Z               "path": "crates/spt-proto/src/version.rs",
2026-06-20T11:21:58.4802408Z               "line": 41
2026-06-20T11:21:58.4803045Z             }
2026-06-20T11:21:58.4803605Z           ]
2026-06-20T11:21:58.4804149Z         },
2026-06-20T11:21:58.4804689Z         "int": {
2026-06-20T11:21:58.4805290Z           "complete": false,
2026-06-20T11:21:58.4805994Z           "evidence": []
2026-06-20T11:21:58.4806652Z         },
2026-06-20T11:21:58.4807215Z         "unit": {
2026-06-20T11:21:58.4807820Z           "complete": true,
2026-06-20T11:21:58.4808661Z           "evidence": [
2026-06-20T11:21:58.4809361Z             {
2026-06-20T11:21:58.4810053Z               "path": "crates/spt-proto/src/version.rs",
2026-06-20T11:21:58.4810948Z               "line": 51
2026-06-20T11:21:58.4811579Z             },
2026-06-20T11:21:58.4812148Z             {
2026-06-20T11:21:58.4812848Z               "path": "crates/spt-proto/src/version.rs",
2026-06-20T11:21:58.4813733Z               "line": 71
2026-06-20T11:21:58.4814372Z             },
2026-06-20T11:21:58.4814948Z             {
2026-06-20T11:21:58.4815644Z               "path": "crates/spt-proto/src/version.rs",
2026-06-20T11:21:58.4816545Z               "line": 83
2026-06-20T11:21:58.4817302Z             }
2026-06-20T11:21:58.4817856Z           ]
2026-06-20T11:21:58.4818405Z         }
2026-06-20T11:21:58.4818939Z       }
2026-06-20T11:21:58.4819535Z     },
2026-06-20T11:21:58.4820065Z     {
2026-06-20T11:21:58.4820618Z       "id": "REQ-ARCH-4",
2026-06-20T11:21:58.4821594Z       "title": "Copy-verbatim the commodity layer from the sister project",
2026-06-20T11:21:58.4822722Z       "requiredStages": [
2026-06-20T11:21:58.4823390Z         "impl",
2026-06-20T11:21:58.4823962Z         "unit"
2026-06-20T11:21:58.4824531Z       ],
2026-06-20T11:21:58.4825078Z       "stages": {
2026-06-20T11:21:58.4825670Z         "doc": {
2026-06-20T11:21:58.4826285Z           "complete": false,
2026-06-20T11:21:58.4826999Z           "evidence": []
2026-06-20T11:21:58.4827628Z         },
2026-06-20T11:21:58.4828186Z         "impl": {
2026-06-20T11:21:58.4828792Z           "complete": true,
2026-06-20T11:21:58.4829537Z           "evidence": [
2026-06-20T11:21:58.4830171Z             {
2026-06-20T11:21:58.4830844Z               "path": "crates/spt-proto/src/event.rs",
2026-06-20T11:21:58.4831717Z               "line": 165
2026-06-20T11:21:58.4832362Z             },
2026-06-20T11:21:58.4832925Z             {
2026-06-20T11:21:58.4833602Z               "path": "crates/spt-proto/src/event.rs",
2026-06-20T11:21:58.4834470Z               "line": 188
2026-06-20T11:21:58.4835106Z             },
2026-06-20T11:21:58.4835673Z             {
2026-06-20T11:21:58.4836360Z               "path": "crates/spt-proto/src/event.rs",
2026-06-20T11:21:58.4837218Z               "line": 208
2026-06-20T11:21:58.4837864Z             },
2026-06-20T11:21:58.4838432Z             {
2026-06-20T11:21:58.4839182Z               "path": "crates/spt-proto/src/event.rs",
2026-06-20T11:21:58.4840055Z               "line": 223
2026-06-20T11:21:58.4840708Z             },
2026-06-20T11:21:58.4841275Z             {
2026-06-20T11:21:58.4841976Z               "path": "crates/spt-proto/src/event.rs",
2026-06-20T11:21:58.4842846Z               "line": 273
2026-06-20T11:21:58.4843513Z             }
2026-06-20T11:21:58.4844072Z           ]
2026-06-20T11:21:58.4844620Z         },
2026-06-20T11:21:58.4845171Z         "int": {
2026-06-20T11:21:58.4845775Z           "complete": false,
2026-06-20T11:21:58.4846480Z           "evidence": []
2026-06-20T11:21:58.4847129Z         },
2026-06-20T11:21:58.4847686Z         "unit": {
2026-06-20T11:21:58.4848311Z           "complete": true,
2026-06-20T11:21:58.4849083Z           "evidence": [
2026-06-20T11:21:58.4849712Z             {
2026-06-20T11:21:58.4850398Z               "path": "crates/spt-proto/src/event.rs",
2026-06-20T11:21:58.4851263Z               "line": 334
2026-06-20T11:21:58.4851907Z             },
2026-06-20T11:21:58.4852479Z             {
2026-06-20T11:21:58.4853151Z               "path": "crates/spt-proto/src/event.rs",
2026-06-20T11:21:58.4854026Z               "line": 344
2026-06-20T11:21:58.4854660Z             },
2026-06-20T11:21:58.4855229Z             {
2026-06-20T11:21:58.4855912Z               "path": "crates/spt-proto/src/event.rs",
2026-06-20T11:21:58.4856783Z               "line": 355
2026-06-20T11:21:58.4857417Z             },
2026-06-20T11:21:58.4857980Z             {
2026-06-20T11:21:58.4858651Z               "path": "crates/spt-proto/src/event.rs",
2026-06-20T11:21:58.4859585Z               "line": 366
2026-06-20T11:21:58.4860345Z             },
2026-06-20T11:21:58.4860910Z             {
2026-06-20T11:21:58.4861590Z               "path": "crates/spt-proto/src/event.rs",
2026-06-20T11:21:58.4862452Z               "line": 378
2026-06-20T11:21:58.4863101Z             },
2026-06-20T11:21:58.4863668Z             {
2026-06-20T11:21:58.4864342Z               "path": "crates/spt-proto/src/event.rs",
2026-06-20T11:21:58.4865215Z               "line": 391
2026-06-20T11:21:58.4865864Z             },
2026-06-20T11:21:58.4866435Z             {
2026-06-20T11:21:58.4867110Z               "path": "crates/spt-proto/src/event.rs",
2026-06-20T11:21:58.4867978Z               "line": 402
2026-06-20T11:21:58.4868731Z             },
2026-06-20T11:21:58.4869516Z             {
2026-06-20T11:21:58.4870199Z               "path": "crates/spt-proto/src/event.rs",
2026-06-20T11:21:58.4871071Z               "line": 419
2026-06-20T11:21:58.4871725Z             },
2026-06-20T11:21:58.4872289Z             {
2026-06-20T11:21:58.4872970Z               "path": "crates/spt-proto/src/event.rs",
2026-06-20T11:21:58.4873844Z               "line": 547
2026-06-20T11:21:58.4874490Z             }
2026-06-20T11:21:58.4875046Z           ]
2026-06-20T11:21:58.4875589Z         }
2026-06-20T11:21:58.4876118Z       }
2026-06-20T11:21:58.4876668Z     },
2026-06-20T11:21:58.4877197Z     {
2026-06-20T11:21:58.4877751Z       "id": "REQ-CLI-1",
2026-06-20T11:21:58.4882145Z       "title": "spt endpoint noun namespace: absorbs fork/suspend/wake/shutdown/rename/stop/digest + access (ported 1:1: allow|revoke|open|list, decision 21) + description (ex-resources blurb; bare=show, set=author); merged endpoint list [--local|--subnet <name>] grouped by subnet with SELF pinned, --detail adding the ex-resources yellow-pages blurb projection; bare spt endpoint = the list (M8 decisions 1-2, 25)",
2026-06-20T11:21:58.4886412Z       "requiredStages": [
2026-06-20T11:21:58.4887089Z         "impl",
2026-06-20T11:21:58.4887663Z         "unit"
2026-06-20T11:21:58.4888245Z       ],
2026-06-20T11:21:58.4888798Z       "stages": {
2026-06-20T11:21:58.4889452Z         "doc": {
2026-06-20T11:21:58.4890067Z           "complete": false,
2026-06-20T11:21:58.4900896Z           "evidence": []
2026-06-20T11:21:58.4901598Z         },
2026-06-20T11:21:58.4902155Z         "impl": {
2026-06-20T11:21:58.4902770Z           "complete": true,
2026-06-20T11:21:58.4903472Z           "evidence": [
2026-06-20T11:21:58.4904097Z             {
2026-06-20T11:21:58.4904746Z               "path": "crates/spt/src/cli.rs",
2026-06-20T11:21:58.4905580Z               "line": 225
2026-06-20T11:21:58.4906230Z             },
2026-06-20T11:21:58.4906808Z             {
2026-06-20T11:21:58.4907470Z               "path": "crates/spt/src/cli.rs",
2026-06-20T11:21:58.4908320Z               "line": 1093
2026-06-20T11:21:58.4909055Z             },
2026-06-20T11:21:58.4909623Z             {
2026-06-20T11:21:58.4910262Z               "path": "crates/spt/src/cli.rs",
2026-06-20T11:21:58.4911090Z               "line": 1720
2026-06-20T11:21:58.4911742Z             },
2026-06-20T11:21:58.4912325Z             {
2026-06-20T11:21:58.4912954Z               "path": "crates/spt/src/cli.rs",
2026-06-20T11:21:58.4913797Z               "line": 3124
2026-06-20T11:21:58.4914444Z             }
2026-06-20T11:21:58.4915016Z           ]
2026-06-20T11:21:58.4915559Z         },
2026-06-20T11:21:58.4916107Z         "int": {
2026-06-20T11:21:58.4916716Z           "complete": false,
2026-06-20T11:21:58.4917411Z           "evidence": []
2026-06-20T11:21:58.4918054Z         },
2026-06-20T11:21:58.4918603Z         "unit": {
2026-06-20T11:21:58.4919292Z           "complete": true,
2026-06-20T11:21:58.4919968Z           "evidence": [
2026-06-20T11:21:58.4920602Z             {
2026-06-20T11:21:58.4921241Z               "path": "crates/spt/src/cli.rs",
2026-06-20T11:21:58.4922064Z               "line": 7947
2026-06-20T11:21:58.4922714Z             }
2026-06-20T11:21:58.4923275Z           ]
2026-06-20T11:21:58.4923814Z         }
2026-06-20T11:21:58.4924357Z       }
2026-06-20T11:21:58.4925085Z     },
2026-06-20T11:21:58.4925624Z     {
2026-06-20T11:21:58.4926185Z       "id": "REQ-CLI-2",
2026-06-20T11:21:58.4929173Z       "title": "spt daemon noun: run|stop|status (hidden daemon verb becomes daemon run; agent-endpoint shutdown keeps its name under endpoint); daemon status renders the pump heartbeat (last-tick recency) so a half-dead daemon is never rendered implied-healthy (M8 decisions 5, 23)",
2026-06-20T11:21:58.4932187Z       "requiredStages": [
2026-06-20T11:21:58.4932848Z         "impl",
2026-06-20T11:21:58.4933431Z         "unit"
2026-06-20T11:21:58.4934004Z       ],
2026-06-20T11:21:58.4934557Z       "stages": {
2026-06-20T11:21:58.4935249Z         "doc": {
2026-06-20T11:21:58.4935865Z           "complete": false,
2026-06-20T11:21:58.4936560Z           "evidence": []
2026-06-20T11:21:58.4937195Z         },
2026-06-20T11:21:58.4937751Z         "impl": {
2026-06-20T11:21:58.4938358Z           "complete": true,
2026-06-20T11:21:58.4939127Z           "evidence": [
2026-06-20T11:21:58.4939757Z             {
2026-06-20T11:21:58.4940445Z               "path": "crates/spt-daemon/src/daemon.rs",
2026-06-20T11:21:58.4941308Z               "line": 414
2026-06-20T11:21:58.4941943Z             },
2026-06-20T11:21:58.4942504Z             {
2026-06-20T11:21:58.4943189Z               "path": "crates/spt-daemon/src/endpoint.rs",
2026-06-20T11:21:58.4944062Z               "line": 97
2026-06-20T11:21:58.4944691Z             },
2026-06-20T11:21:58.4945249Z             {
2026-06-20T11:21:58.4945933Z               "path": "crates/spt-daemon/src/seedmap.rs",
2026-06-20T11:21:58.4946811Z               "line": 256
2026-06-20T11:21:58.4947445Z             },
2026-06-20T11:21:58.4948013Z             {
2026-06-20T11:21:58.4948633Z               "path": "crates/spt/src/cli.rs",
2026-06-20T11:21:58.4949510Z               "line": 434
2026-06-20T11:21:58.4950154Z             },
2026-06-20T11:21:58.4950716Z             {
2026-06-20T11:21:58.4951362Z               "path": "crates/spt/src/cli.rs",
2026-06-20T11:21:58.4952183Z               "line": 1174
2026-06-20T11:21:58.4952822Z             },
2026-06-20T11:21:58.4953374Z             {
2026-06-20T11:21:58.4953992Z               "path": "crates/spt/src/cli.rs",
2026-06-20T11:21:58.4954799Z               "line": 1958
2026-06-20T11:21:58.4955443Z             },
2026-06-20T11:21:58.4955994Z             {
2026-06-20T11:21:58.4956631Z               "path": "crates/spt/src/cli.rs",
2026-06-20T11:21:58.4957437Z               "line": 2047
2026-06-20T11:21:58.4958080Z             },
2026-06-20T11:21:58.4958635Z             {
2026-06-20T11:21:58.4959323Z               "path": "crates/spt/src/cli.rs",
2026-06-20T11:21:58.4960132Z               "line": 2108
2026-06-20T11:21:58.4960772Z             }
2026-06-20T11:21:58.4961324Z           ]
2026-06-20T11:21:58.4961856Z         },
2026-06-20T11:21:58.4962399Z         "int": {
2026-06-20T11:21:58.4963219Z           "complete": false,
2026-06-20T11:21:58.4963920Z           "evidence": []
2026-06-20T11:21:58.4964557Z         },
2026-06-20T11:21:58.4965107Z         "unit": {
2026-06-20T11:21:58.4965716Z           "complete": true,
2026-06-20T11:21:58.4966384Z           "evidence": [
2026-06-20T11:21:58.4966997Z             {
2026-06-20T11:21:58.4967687Z               "path": "crates/spt-daemon/src/seedmap.rs",
2026-06-20T11:21:58.4968570Z               "line": 338
2026-06-20T11:21:58.4969289Z             },
2026-06-20T11:21:58.4969835Z             {
2026-06-20T11:21:58.4970465Z               "path": "crates/spt/src/cli.rs",
2026-06-20T11:21:58.4971269Z               "line": 8102
2026-06-20T11:21:58.4971917Z             }
2026-06-20T11:21:58.4972464Z           ]
2026-06-20T11:21:58.4972998Z         }
2026-06-20T11:21:58.4973531Z       }
2026-06-20T11:21:58.4974050Z     },
2026-06-20T11:21:58.4974562Z     {
2026-06-20T11:21:58.4975103Z       "id": "REQ-CLI-3",
2026-06-20T11:21:58.4978052Z       "title": "Agent hot path stays flat across the M8 reorg: send/ring/ready/whoami/how-to unchanged; notify moves to subnet notify while notif stays top-level; breaking renames land clean with no deprecation shims (zero external CLI consumers pre-spt-claude-code) (M8 decisions 3-4, 9)",
2026-06-20T11:21:58.4981310Z       "requiredStages": [
2026-06-20T11:21:58.4981969Z         "impl",
2026-06-20T11:21:58.4982529Z         "unit"
2026-06-20T11:21:58.4983075Z       ],
2026-06-20T11:21:58.4983610Z       "stages": {
2026-06-20T11:21:58.4984183Z         "doc": {
2026-06-20T11:21:58.4984774Z           "complete": false,
2026-06-20T11:21:58.4985459Z           "evidence": []
2026-06-20T11:21:58.4986084Z         },
2026-06-20T11:21:58.4986631Z         "impl": {
2026-06-20T11:21:58.4987223Z           "complete": true,
2026-06-20T11:21:58.4988026Z           "evidence": [
2026-06-20T11:21:58.4988641Z             {
2026-06-20T11:21:58.4989351Z               "path": "crates/spt/src/cli.rs",
2026-06-20T11:21:58.4990171Z               "line": 1087
2026-06-20T11:21:58.4990816Z             }
2026-06-20T11:21:58.4991360Z           ]
2026-06-20T11:21:58.4991890Z         },
2026-06-20T11:21:58.4992428Z         "int": {
2026-06-20T11:21:58.4993018Z           "complete": false,
2026-06-20T11:21:58.4993717Z           "evidence": []
2026-06-20T11:21:58.4994341Z         },
2026-06-20T11:21:58.4994885Z         "unit": {
2026-06-20T11:21:58.4995476Z           "complete": true,
2026-06-20T11:21:58.4996144Z           "evidence": [
2026-06-20T11:21:58.4996763Z             {
2026-06-20T11:21:58.4997401Z               "path": "crates/spt/src/cli.rs",
2026-06-20T11:21:58.4998226Z               "line": 7912
2026-06-20T11:21:58.4998867Z             }
2026-06-20T11:21:58.4999506Z           ]
2026-06-20T11:21:58.5000030Z         }
2026-06-20T11:21:58.5000569Z       }
2026-06-20T11:21:58.5001088Z     },
2026-06-20T11:21:58.5001600Z     {
2026-06-20T11:21:58.5002135Z       "id": "REQ-CLI-4",
2026-06-20T11:21:58.5009326Z       "title": "User-facing CLI output is human-readable: DIRECT-USER commands (e.g. adapter update/list/use) render friendly prose instead of raw CODE:RESULT markers — \"claude-spt is up to date (0.2.0).\" not \"ADAPTER_UPDATE_UPTODATE:claude-spt: installed 0.2.0, latest 0.2.0\". Strictly bounded to the direct-user surface: the adapter-PARSED bringup tokens (SEEDED/BOUND/READY/NO_SEED on seed/listen, which adapters grep) stay machine-parseable — humanization is additive (a human line beside the marker, or a --porcelain/--quiet split), never a silent rename of a dual-contract marker. The user-facing bringup composition belongs to the adapter (perri); this REQ owns only the direct-user CLI surface. (v0.9.0)",
2026-06-20T11:21:58.5016115Z       "requiredStages": [],
2026-06-20T11:21:58.5016784Z       "stages": {
2026-06-20T11:21:58.5017358Z         "doc": {
2026-06-20T11:21:58.5017969Z           "complete": false,
2026-06-20T11:21:58.5018655Z           "evidence": []
2026-06-20T11:21:58.5019355Z         },
2026-06-20T11:21:58.5019896Z         "impl": {
2026-06-20T11:21:58.5020497Z           "complete": true,
2026-06-20T11:21:58.5021155Z           "evidence": [
2026-06-20T11:21:58.5021775Z             {
2026-06-20T11:21:58.5022401Z               "path": "crates/spt/src/cli.rs",
2026-06-20T11:21:58.5023213Z               "line": 5678
2026-06-20T11:21:58.5023842Z             }
2026-06-20T11:21:58.5024390Z           ]
2026-06-20T11:21:58.5024926Z         },
2026-06-20T11:21:58.5025460Z         "int": {
2026-06-20T11:21:58.5026051Z           "complete": false,
2026-06-20T11:21:58.5026734Z           "evidence": []
2026-06-20T11:21:58.5027344Z         },
2026-06-20T11:21:58.5027876Z         "unit": {
2026-06-20T11:21:58.5028486Z           "complete": false,
2026-06-20T11:21:58.5029259Z           "evidence": []
2026-06-20T11:21:58.5029886Z         }
2026-06-20T11:21:58.5030414Z       }
2026-06-20T11:21:58.5030915Z     },
2026-06-20T11:21:58.5031433Z     {
2026-06-20T11:21:58.5032011Z       "id": "REQ-CLI-HELP-MARKDOWN",
2026-06-20T11:21:58.5041909Z       "title": "`spt --help` (and every subcommand --help) renders the inline Markdown authored in the clap doc-comments as terminal styling, never as literal markers: `**bold**` → ANSI bold, `` `code` `` → ANSI cyan, `[text](url)` → `text`. The markers are STRIPPED either way — a raw `**` or backtick must NEVER reach the user (the operator-reported v0.12.0 defect: help text reads `**ctrl-b**` and stray backticks verbatim). Color/bold escapes are emitted ONLY when the help is going to a real terminal AND color is not suppressed (NO_COLOR unset · CLICOLOR != 0 · CLICOLOR_FORCE forces on); a pipe / redirect / CI / NO_COLOR falls back to strip-only (clean plaintext, zero escapes) so machine-readable help is byte-identical regardless of marker syntax. Pure transform over the clap-rendered help string at the single run()/bare_invocation chokepoint; preserves pre-existing ANSI (CSI sequences passed through untouched), never spans markers across a newline, leaves unmatched/empty markers literal, and does not alter the help layout. (v0.12.1)",
2026-06-20T11:21:58.5052035Z       "requiredStages": [
2026-06-20T11:21:58.5052688Z         "impl",
2026-06-20T11:21:58.5053271Z         "unit"
2026-06-20T11:21:58.5053826Z       ],
2026-06-20T11:21:58.5054359Z       "stages": {
2026-06-20T11:21:58.5054936Z         "doc": {
2026-06-20T11:21:58.5055523Z           "complete": false,
2026-06-20T11:21:58.5056210Z           "evidence": []
2026-06-20T11:21:58.5056825Z         },
2026-06-20T11:21:58.5057363Z         "impl": {
2026-06-20T11:21:58.5057959Z           "complete": true,
2026-06-20T11:21:58.5058622Z           "evidence": [
2026-06-20T11:21:58.5059322Z             {
2026-06-20T11:21:58.5059956Z               "path": "crates/spt/src/helpfmt.rs",
2026-06-20T11:21:58.5060772Z               "line": 8
2026-06-20T11:21:58.5061368Z             },
2026-06-20T11:21:58.5061922Z             {
2026-06-20T11:21:58.5062562Z               "path": "crates/spt/src/helpfmt.rs",
2026-06-20T11:21:58.5063372Z               "line": 51
2026-06-20T11:21:58.5063982Z             },
2026-06-20T11:21:58.5064534Z             {
2026-06-20T11:21:58.5065167Z               "path": "crates/spt/src/helpfmt.rs",
2026-06-20T11:21:58.5065977Z               "line": 82
2026-06-20T11:21:58.5066602Z             },
2026-06-20T11:21:58.5067157Z             {
2026-06-20T11:21:58.5067790Z               "path": "crates/spt/src/helpfmt.rs",
2026-06-20T11:21:58.5068615Z               "line": 229
2026-06-20T11:21:58.5069369Z             }
2026-06-20T11:21:58.5069911Z           ]
2026-06-20T11:21:58.5070435Z         },
2026-06-20T11:21:58.5070956Z         "int": {
2026-06-20T11:21:58.5071548Z           "complete": false,
2026-06-20T11:21:58.5072223Z           "evidence": []
2026-06-20T11:21:58.5072865Z         },
2026-06-20T11:21:58.5073398Z         "unit": {
2026-06-20T11:21:58.5073985Z           "complete": true,
2026-06-20T11:21:58.5074662Z           "evidence": [
2026-06-20T11:21:58.5075268Z             {
2026-06-20T11:21:58.5075898Z               "path": "crates/spt/src/helpfmt.rs",
2026-06-20T11:21:58.5076704Z               "line": 249
2026-06-20T11:21:58.5077348Z             },
2026-06-20T11:21:58.5077897Z             {
2026-06-20T11:21:58.5078541Z               "path": "crates/spt/src/helpfmt.rs",
2026-06-20T11:21:58.5079418Z               "line": 256
2026-06-20T11:21:58.5080039Z             },
2026-06-20T11:21:58.5080592Z             {
2026-06-20T11:21:58.5081225Z               "path": "crates/spt/src/helpfmt.rs",
2026-06-20T11:21:58.5082040Z               "line": 263
2026-06-20T11:21:58.5082663Z             },
2026-06-20T11:21:58.5083200Z             {
2026-06-20T11:21:58.5083839Z               "path": "crates/spt/src/helpfmt.rs",
2026-06-20T11:21:58.5084651Z               "line": 270
2026-06-20T11:21:58.5085271Z             },
2026-06-20T11:21:58.5085824Z             {
2026-06-20T11:21:58.5086463Z               "path": "crates/spt/src/helpfmt.rs",
2026-06-20T11:21:58.5087279Z               "line": 297
2026-06-20T11:21:58.5087899Z             },
2026-06-20T11:21:58.5088448Z             {
2026-06-20T11:21:58.5089173Z               "path": "crates/spt/src/helpfmt.rs",
2026-06-20T11:21:58.5089993Z               "line": 307
2026-06-20T11:21:58.5090757Z             },
2026-06-20T11:21:58.5091317Z             {
2026-06-20T11:21:58.5091952Z               "path": "crates/spt/src/helpfmt.rs",
2026-06-20T11:21:58.5092763Z               "line": 317
2026-06-20T11:21:58.5093390Z             },
2026-06-20T11:21:58.5093946Z             {
2026-06-20T11:21:58.5094586Z               "path": "crates/spt/src/helpfmt.rs",
2026-06-20T11:21:58.5095419Z               "line": 331
2026-06-20T11:21:58.5096034Z             },
2026-06-20T11:21:58.5096585Z             {
2026-06-20T11:21:58.5097224Z               "path": "crates/spt/src/helpfmt.rs",
2026-06-20T11:21:58.5098034Z               "line": 340
2026-06-20T11:21:58.5098772Z             },
2026-06-20T11:21:58.5099400Z             {
2026-06-20T11:21:58.5100053Z               "path": "crates/spt/src/helpfmt.rs",
2026-06-20T11:21:58.5100877Z               "line": 348
2026-06-20T11:21:58.5101496Z             }
2026-06-20T11:21:58.5102040Z           ]
2026-06-20T11:21:58.5102560Z         }
2026-06-20T11:21:58.5103089Z       }
2026-06-20T11:21:58.5103595Z     },
2026-06-20T11:21:58.5104106Z     {
2026-06-20T11:21:58.5104682Z       "id": "REQ-CLI-OUTPUT-MARKDOWN",
2026-06-20T11:21:58.5122202Z       "title": "Human-prose COMMAND OUTPUT (not just `--help`) renders the inline Markdown authored in its source strings as terminal styling, never literal markers: `` `code` `` → ANSI cyan, `**bold**` → ANSI bold, `[text](url)` → `text`, markers STRIPPED either way. REQ-CLI-HELP-MARKDOWN only hooked the clap `--help` chokepoint, so command output still printed raw Markdown (audit: `spt how-to` topic text showed `# headers`/backticks, `spt subnet`/`subnet status` hint footers showed stray backticks, the daemon-status `not running` line, the `ENDPOINT_RUN_STARTED` attach hint, and the daemon's `SUBNET_DETACHED` startup line — 13 prose surfaces). The same line-bounded pure `helpfmt::render` is applied at each emit site, color-gated by the OUTPUT STREAM's own tty (`stdout_color` for print/println, the new `stderr_color` for eprintln). HARNESS-SAFETY (binding): color is tty-gated, so an adapter (piped / non-tty / NO_COLOR) gets STRIP mode = zero ANSI + markers removed; every dual-contract MACHINE token on a rendered line (`ENDPOINT_RUN_STARTED:`, `NO_SUCH_TOPIC:`, `SUBNET_DETACHED:`) carries NO Markdown markers, so it survives strip byte-intact — the adapter parse is never perturbed. Pure-machine output (the `<EVENT …>` envelope, bringup parse-tokens SEEDED/BOUND/READY/NO_SEED, `--json`, QR) is NEVER routed through the renderer. The one spt-daemon source string (`SUBNET_DETACHED`, the bin-local renderer is unreachable from the daemon crate) is authored marker-free instead. (v0.12.2)",
2026-06-20T11:21:58.5135541Z       "requiredStages": [
2026-06-20T11:21:58.5136202Z         "impl",
2026-06-20T11:21:58.5136778Z         "unit"
2026-06-20T11:21:58.5137331Z       ],
2026-06-20T11:21:58.5137870Z       "stages": {
2026-06-20T11:21:58.5138446Z         "doc": {
2026-06-20T11:21:58.5139112Z           "complete": false,
2026-06-20T11:21:58.5139803Z           "evidence": []
2026-06-20T11:21:58.5140428Z         },
2026-06-20T11:21:58.5140951Z         "impl": {
2026-06-20T11:21:58.5141534Z           "complete": true,
2026-06-20T11:21:58.5142188Z           "evidence": [
2026-06-20T11:21:58.5142784Z             {
2026-06-20T11:21:58.5143457Z               "path": "crates/spt-daemon/src/daemon.rs",
2026-06-20T11:21:58.5144300Z               "line": 141
2026-06-20T11:21:58.5144924Z             },
2026-06-20T11:21:58.5145474Z             {
2026-06-20T11:21:58.5146086Z               "path": "crates/spt/src/cli.rs",
2026-06-20T11:21:58.5146880Z               "line": 1376
2026-06-20T11:21:58.5147515Z             },
2026-06-20T11:21:58.5148059Z             {
2026-06-20T11:21:58.5148675Z               "path": "crates/spt/src/cli.rs",
2026-06-20T11:21:58.5149547Z               "line": 2145
2026-06-20T11:21:58.5150166Z             },
2026-06-20T11:21:58.5150711Z             {
2026-06-20T11:21:58.5151321Z               "path": "crates/spt/src/cli.rs",
2026-06-20T11:21:58.5152286Z               "line": 4368
2026-06-20T11:21:58.5152929Z             },
2026-06-20T11:21:58.5153488Z             {
2026-06-20T11:21:58.5154113Z               "path": "crates/spt/src/cli.rs",
2026-06-20T11:21:58.5154916Z               "line": 4466
2026-06-20T11:21:58.5155542Z             },
2026-06-20T11:21:58.5156095Z             {
2026-06-20T11:21:58.5156709Z               "path": "crates/spt/src/cli.rs",
2026-06-20T11:21:58.5157497Z               "line": 5257
2026-06-20T11:21:58.5158127Z             },
2026-06-20T11:21:58.5158680Z             {
2026-06-20T11:21:58.5159395Z               "path": "crates/spt/src/helpfmt.rs",
2026-06-20T11:21:58.5160327Z               "line": 39
2026-06-20T11:21:58.5160952Z             }
2026-06-20T11:21:58.5161487Z           ]
2026-06-20T11:21:58.5162004Z         },
2026-06-20T11:21:58.5162532Z         "int": {
2026-06-20T11:21:58.5163123Z           "complete": false,
2026-06-20T11:21:58.5163795Z           "evidence": []
2026-06-20T11:21:58.5164415Z         },
2026-06-20T11:21:58.5164947Z         "unit": {
2026-06-20T11:21:58.5165538Z           "complete": true,
2026-06-20T11:21:58.5166197Z           "evidence": [
2026-06-20T11:21:58.5166792Z             {
2026-06-20T11:21:58.5167414Z               "path": "crates/spt/src/cli.rs",
2026-06-20T11:21:58.5168212Z               "line": 10272
2026-06-20T11:21:58.5168836Z             },
2026-06-20T11:21:58.5169466Z             {
2026-06-20T11:21:58.5170093Z               "path": "crates/spt/src/helpfmt.rs",
2026-06-20T11:21:58.5170901Z               "line": 281
2026-06-20T11:21:58.5171545Z             },
2026-06-20T11:21:58.5172103Z             {
2026-06-20T11:21:58.5172730Z               "path": "crates/spt/src/helpfmt.rs",
2026-06-20T11:21:58.5173553Z               "line": 358
2026-06-20T11:21:58.5174164Z             },
2026-06-20T11:21:58.5174717Z             {
2026-06-20T11:21:58.5175351Z               "path": "crates/spt/src/helpfmt.rs",
2026-06-20T11:21:58.5176162Z               "line": 381
2026-06-20T11:21:58.5176781Z             },
2026-06-20T11:21:58.5177329Z             {
2026-06-20T11:21:58.5177979Z               "path": "crates/spt/src/helpfmt.rs",
2026-06-20T11:21:58.5237110Z               "line": 395
2026-06-20T11:21:58.5238154Z             }
2026-06-20T11:21:58.5238716Z           ]
2026-06-20T11:21:58.5239332Z         }
2026-06-20T11:21:58.5239856Z       }
2026-06-20T11:21:58.5240375Z     },
2026-06-20T11:21:58.5240891Z     {
2026-06-20T11:21:58.5241450Z       "id": "REQ-CONSENT-1",
2026-06-20T11:21:58.5244893Z       "title": "Consent grant store: capability x subject-agent x target-node rows, enforced at the target node, subnet-settable (replicates as security material near the trust store), revocable; gated-capability ids (remote-exec, instantiate-anywhere) reserved-but-refusing; v1 consumers are the shell spawn gates (CONTEXT Consent & security gates)",
2026-06-20T11:21:58.5248362Z       "requiredStages": [
2026-06-20T11:21:58.5249073Z         "impl",
2026-06-20T11:21:58.5249634Z         "unit"
2026-06-20T11:21:58.5250178Z       ],
2026-06-20T11:21:58.5250697Z       "stages": {
2026-06-20T11:21:58.5251255Z         "doc": {
2026-06-20T11:21:58.5251848Z           "complete": false,
2026-06-20T11:21:58.5252524Z           "evidence": []
2026-06-20T11:21:58.5253131Z         },
2026-06-20T11:21:58.5253651Z         "impl": {
2026-06-20T11:21:58.5254228Z           "complete": true,
2026-06-20T11:21:58.5254877Z           "evidence": [
2026-06-20T11:21:58.5255472Z             {
2026-06-20T11:21:58.5256160Z               "path": "crates/spt-daemon/src/grants.rs",
2026-06-20T11:21:58.5256988Z               "line": 27
2026-06-20T11:21:58.5257630Z             },
2026-06-20T11:21:58.5258188Z             {
2026-06-20T11:21:58.5258841Z               "path": "crates/spt-daemon/src/grants.rs",
2026-06-20T11:21:58.5259738Z               "line": 75
2026-06-20T11:21:58.5260347Z             },
2026-06-20T11:21:58.5260894Z             {
2026-06-20T11:21:58.5261548Z               "path": "crates/spt-daemon/src/grants.rs",
2026-06-20T11:21:58.5262704Z               "line": 98
2026-06-20T11:21:58.5263323Z             },
2026-06-20T11:21:58.5263863Z             {
2026-06-20T11:21:58.5264507Z               "path": "crates/spt-store/src/grants.rs",
2026-06-20T11:21:58.5265318Z               "line": 82
2026-06-20T11:21:58.5265933Z             },
2026-06-20T11:21:58.5266482Z             {
2026-06-20T11:21:58.5267130Z               "path": "crates/spt-store/src/grants.rs",
2026-06-20T11:21:58.5267955Z               "line": 109
2026-06-20T11:21:58.5268566Z             },
2026-06-20T11:21:58.5269238Z             {
2026-06-20T11:21:58.5269898Z               "path": "crates/spt-store/src/grants.rs",
2026-06-20T11:21:58.5270864Z               "line": 127
2026-06-20T11:21:58.5271479Z             },
2026-06-20T11:21:58.5272027Z             {
2026-06-20T11:21:58.5272684Z               "path": "crates/spt-store/src/grants.rs",
2026-06-20T11:21:58.5273508Z               "line": 142
2026-06-20T11:21:58.5274127Z             },
2026-06-20T11:21:58.5274685Z             {
2026-06-20T11:21:58.5275280Z               "path": "crates/spt/src/cli.rs",
2026-06-20T11:21:58.5276065Z               "line": 7048
2026-06-20T11:21:58.5276680Z             }
2026-06-20T11:21:58.5277218Z           ]
2026-06-20T11:21:58.5277737Z         },
2026-06-20T11:21:58.5278261Z         "int": {
2026-06-20T11:21:58.5278845Z           "complete": false,
2026-06-20T11:21:58.5279590Z           "evidence": []
2026-06-20T11:21:58.5280220Z         },
2026-06-20T11:21:58.5280739Z         "unit": {
2026-06-20T11:21:58.5281323Z           "complete": true,
2026-06-20T11:21:58.5281972Z           "evidence": [
2026-06-20T11:21:58.5282568Z             {
2026-06-20T11:21:58.5283235Z               "path": "crates/spt-daemon/src/grants.rs",
2026-06-20T11:21:58.5284072Z               "line": 334
2026-06-20T11:21:58.5284678Z             },
2026-06-20T11:21:58.5285235Z             {
2026-06-20T11:21:58.5285894Z               "path": "crates/spt-daemon/src/grants.rs",
2026-06-20T11:21:58.5286724Z               "line": 380
2026-06-20T11:21:58.5287354Z             },
2026-06-20T11:21:58.5287893Z             {
2026-06-20T11:21:58.5288551Z               "path": "crates/spt-daemon/src/grants.rs",
2026-06-20T11:21:58.5289686Z               "line": 391
2026-06-20T11:21:58.5290306Z             },
2026-06-20T11:21:58.5290864Z             {
2026-06-20T11:21:58.5291517Z               "path": "crates/spt-store/src/grants.rs",
2026-06-20T11:21:58.5292328Z               "line": 165
2026-06-20T11:21:58.5292948Z             },
2026-06-20T11:21:58.5293500Z             {
2026-06-20T11:21:58.5294150Z               "path": "crates/spt-store/src/grants.rs",
2026-06-20T11:21:58.5294971Z               "line": 184
2026-06-20T11:21:58.5295586Z             },
2026-06-20T11:21:58.5296135Z             {
2026-06-20T11:21:58.5296776Z               "path": "crates/spt-store/src/grants.rs",
2026-06-20T11:21:58.5297599Z               "line": 204
2026-06-20T11:21:58.5298219Z             },
2026-06-20T11:21:58.5298768Z             {
2026-06-20T11:21:58.5299457Z               "path": "crates/spt/src/cli.rs",
2026-06-20T11:21:58.5300232Z               "line": 8334
2026-06-20T11:21:58.5300852Z             }
2026-06-20T11:21:58.5301396Z           ]
2026-06-20T11:21:58.5301927Z         }
2026-06-20T11:21:58.5302443Z       }
2026-06-20T11:21:58.5302950Z     },
2026-06-20T11:21:58.5303464Z     {
2026-06-20T11:21:58.5304012Z       "id": "REQ-CONSENT-2",
2026-06-20T11:21:58.5307138Z       "title": "Interactive consent escalation: an ungated high-risk action routes a consent prompt to the user's most-recently-active session; allow-once / allow-always (writes a grant) / deny; pre-consent flags (can_shutdown, shell_wake_spawn_anywhere) author grants via manifest/settings (CONTEXT Consent & security gates)",
2026-06-20T11:21:58.5310374Z       "requiredStages": [
2026-06-20T11:21:58.5311017Z         "impl",
2026-06-20T11:21:58.5311571Z         "unit"
2026-06-20T11:21:58.5312119Z       ],
2026-06-20T11:21:58.5312647Z       "stages": {
2026-06-20T11:21:58.5313332Z         "doc": {
2026-06-20T11:21:58.5313920Z           "complete": false,
2026-06-20T11:21:58.5314582Z           "evidence": []
2026-06-20T11:21:58.5315190Z         },
2026-06-20T11:21:58.5315724Z         "impl": {
2026-06-20T11:21:58.5316320Z           "complete": true,
2026-06-20T11:21:58.5316979Z           "evidence": [
2026-06-20T11:21:58.5317565Z             {
2026-06-20T11:21:58.5318224Z               "path": "crates/spt-daemon/src/grants.rs",
2026-06-20T11:21:58.5319182Z               "line": 140
2026-06-20T11:21:58.5319807Z             },
2026-06-20T11:21:58.5320354Z             {
2026-06-20T11:21:58.5321014Z               "path": "crates/spt-daemon/src/grants.rs",
2026-06-20T11:21:58.5321977Z               "line": 165
2026-06-20T11:21:58.5322593Z             },
2026-06-20T11:21:58.5323137Z             {
2026-06-20T11:21:58.5323798Z               "path": "crates/spt-daemon/src/grants.rs",
2026-06-20T11:21:58.5324618Z               "line": 199
2026-06-20T11:21:58.5325243Z             },
2026-06-20T11:21:58.5325778Z             {
2026-06-20T11:21:58.5326427Z               "path": "crates/spt-daemon/src/grants.rs",
2026-06-20T11:21:58.5327257Z               "line": 241
2026-06-20T11:21:58.5327873Z             },
2026-06-20T11:21:58.5328418Z             {
2026-06-20T11:21:58.5329161Z               "path": "crates/spt-daemon/src/grants.rs",
2026-06-20T11:21:58.5329975Z               "line": 269
2026-06-20T11:21:58.5330600Z             },
2026-06-20T11:21:58.5331137Z             {
2026-06-20T11:21:58.5331785Z               "path": "crates/spt-daemon/src/grants.rs",
2026-06-20T11:21:58.5332609Z               "line": 300
2026-06-20T11:21:58.5333234Z             },
2026-06-20T11:21:58.5333767Z             {
2026-06-20T11:21:58.5334368Z               "path": "crates/spt/src/cli.rs",
2026-06-20T11:21:58.5335135Z               "line": 6839
2026-06-20T11:21:58.5335750Z             },
2026-06-20T11:21:58.5336301Z             {
2026-06-20T11:21:58.5336906Z               "path": "crates/spt/src/cli.rs",
2026-06-20T11:21:58.5337687Z               "line": 6897
2026-06-20T11:21:58.5338312Z             }
2026-06-20T11:21:58.5338842Z           ]
2026-06-20T11:21:58.5339430Z         },
2026-06-20T11:21:58.5339958Z         "int": {
2026-06-20T11:21:58.5340535Z           "complete": false,
2026-06-20T11:21:58.5341194Z           "evidence": []
2026-06-20T11:21:58.5341801Z         },
2026-06-20T11:21:58.5342326Z         "unit": {
2026-06-20T11:21:58.5342903Z           "complete": true,
2026-06-20T11:21:58.5343552Z           "evidence": [
2026-06-20T11:21:58.5344148Z             {
2026-06-20T11:21:58.5344804Z               "path": "crates/spt-daemon/src/grants.rs",
2026-06-20T11:21:58.5345638Z               "line": 419
2026-06-20T11:21:58.5346248Z             },
2026-06-20T11:21:58.5346791Z             {
2026-06-20T11:21:58.5347448Z               "path": "crates/spt-daemon/src/grants.rs",
2026-06-20T11:21:58.5348257Z               "line": 436
2026-06-20T11:21:58.5348881Z             },
2026-06-20T11:21:58.5349491Z             {
2026-06-20T11:21:58.5350166Z               "path": "crates/spt-daemon/src/grants.rs",
2026-06-20T11:21:58.5350991Z               "line": 472
2026-06-20T11:21:58.5351603Z             },
2026-06-20T11:21:58.5352139Z             {
2026-06-20T11:21:58.5352804Z               "path": "crates/spt-daemon/src/grants.rs",
2026-06-20T11:21:58.5353629Z               "line": 516
2026-06-20T11:21:58.5354249Z             },
2026-06-20T11:21:58.5354798Z             {
2026-06-20T11:21:58.5355408Z               "path": "crates/spt/src/cli.rs",
2026-06-20T11:21:58.5356189Z               "line": 9614
2026-06-20T11:21:58.5356847Z             },
2026-06-20T11:21:58.5357379Z             {
2026-06-20T11:21:58.5357998Z               "path": "crates/spt/src/cli.rs",
2026-06-20T11:21:58.5358774Z               "line": 9696
2026-06-20T11:21:58.5359476Z             }
2026-06-20T11:21:58.5360014Z           ]
2026-06-20T11:21:58.5360536Z         }
2026-06-20T11:21:58.5361050Z       }
2026-06-20T11:21:58.5361551Z     },
2026-06-20T11:21:58.5362186Z     {
2026-06-20T11:21:58.5362733Z       "id": "REQ-CONSENT-3",
2026-06-20T11:21:58.5368925Z       "title": "Per-capability approval gates (class-keyed): the require_approval enum may ride INDIVIDUAL [shell.capabilities] entries — gating the dangerous ACT, not just the spawn — with an optional class_key scoping the grant qualifier finer than the capability id ((owner endpoint x device class x node); a remembered HID-class attach grant never authorizes a storage-class attach). Reuses the grant store + interactive escalation + tighten-only floor (REQ-CONSENT-1/2 plumbing). Spawn gates govern EXISTENCE; capability gates govern ACTS — an explicitly distinct invariant (CONTEXT:283, ratified 2026-06-11 Gateway grill).",
2026-06-20T11:21:58.5375227Z       "requiredStages": [
2026-06-20T11:21:58.5375952Z         "doc",
2026-06-20T11:21:58.5376647Z         "impl",
2026-06-20T11:21:58.5377309Z         "unit",
2026-06-20T11:21:58.5377967Z         "int"
2026-06-20T11:21:58.5378636Z       ],
2026-06-20T11:21:58.5379356Z       "stages": {
2026-06-20T11:21:58.5380015Z         "doc": {
2026-06-20T11:21:58.5380776Z           "complete": true,
2026-06-20T11:21:58.5381541Z           "evidence": [
2026-06-20T11:21:58.5382263Z             {
2026-06-20T11:21:58.5382986Z               "path": "CONTEXT.md",
2026-06-20T11:21:58.5383767Z               "line": 304
2026-06-20T11:21:58.5384543Z             }
2026-06-20T11:21:58.5385177Z           ]
2026-06-20T11:21:58.5385806Z         },
2026-06-20T11:21:58.5386488Z         "impl": {
2026-06-20T11:21:58.5387149Z           "complete": true,
2026-06-20T11:21:58.5387955Z           "evidence": [
2026-06-20T11:21:58.5388628Z             {
2026-06-20T11:21:58.5389144Z               "path": "crates/spt-daemon/src/linkhost.rs",
2026-06-20T11:21:58.5389506Z               "line": 123
2026-06-20T11:21:58.5389854Z             },
2026-06-20T11:21:58.5390121Z             {
2026-06-20T11:21:58.5390560Z               "path": "crates/spt-daemon/src/linkhost.rs",
2026-06-20T11:21:58.5390856Z               "line": 162
2026-06-20T11:21:58.5391190Z             },
2026-06-20T11:21:58.5391524Z             {
2026-06-20T11:21:58.5391931Z               "path": "crates/spt-daemon/src/linkhost.rs",
2026-06-20T11:21:58.5392264Z               "line": 291
2026-06-20T11:21:58.5392536Z             },
2026-06-20T11:21:58.5392870Z             {
2026-06-20T11:21:58.5393303Z               "path": "crates/spt-runtime/src/manifest.rs",
2026-06-20T11:21:58.5393627Z               "line": 574
2026-06-20T11:21:58.5393937Z             },
2026-06-20T11:21:58.5394204Z             {
2026-06-20T11:21:58.5394653Z               "path": "crates/spt-runtime/src/manifest.rs",
2026-06-20T11:21:58.5394973Z               "line": 824
2026-06-20T11:21:58.5395292Z             },
2026-06-20T11:21:58.5395598Z             {
2026-06-20T11:21:58.5395941Z               "path": "crates/spt/src/cli.rs",
2026-06-20T11:21:58.5396304Z               "line": 6965
2026-06-20T11:21:58.5396580Z             }
2026-06-20T11:21:58.5396900Z           ]
2026-06-20T11:21:58.5397208Z         },
2026-06-20T11:21:58.5397513Z         "int": {
2026-06-20T11:21:58.5397890Z           "complete": true,
2026-06-20T11:21:58.5398210Z           "evidence": [
2026-06-20T11:21:58.5398515Z             {
2026-06-20T11:21:58.5399025Z               "path": "crates/spt/tests/shell_actgate_e2e.rs",
2026-06-20T11:21:58.5399345Z               "line": 16
2026-06-20T11:21:58.5399615Z             }
2026-06-20T11:21:58.5399968Z           ]
2026-06-20T11:21:58.5400271Z         },
2026-06-20T11:21:58.5400549Z         "unit": {
2026-06-20T11:21:58.5400901Z           "complete": true,
2026-06-20T11:21:58.5401178Z           "evidence": [
2026-06-20T11:21:58.5401535Z             {
2026-06-20T11:21:58.5401983Z               "path": "crates/spt-daemon/src/linkhost.rs",
2026-06-20T11:21:58.5402273Z               "line": 1019
2026-06-20T11:21:58.5402590Z             },
2026-06-20T11:21:58.5402849Z             {
2026-06-20T11:21:58.5403324Z               "path": "crates/spt-daemon/src/linkhost.rs",
2026-06-20T11:21:58.5403740Z               "line": 1066
2026-06-20T11:21:58.5404069Z             },
2026-06-20T11:21:58.5404403Z             {
2026-06-20T11:21:58.5404792Z               "path": "crates/spt-runtime/src/manifest.rs",
2026-06-20T11:21:58.5405176Z               "line": 1394
2026-06-20T11:21:58.5405443Z             }
2026-06-20T11:21:58.5405763Z           ]
2026-06-20T11:21:58.5406030Z         }
2026-06-20T11:21:58.5406320Z       }
2026-06-20T11:21:58.5406687Z     },
2026-06-20T11:21:58.5406950Z     {
2026-06-20T11:21:58.5407303Z       "id": "REQ-CONV-1",
2026-06-20T11:21:58.5411561Z       "title": "Peer address seeding, both cold starts: durable peer-addrs.json (identity dir) maps peer pubkey → last-known dialable address; the pump's resolver consults it FIRST with id-only discovery fallback on miss or dial failure (a stale addr never strands a peer); written by the pairing ceremony (both sides, from the live connection) and by the pump on successful connect; post-join first sync and post-restart resync converge in seconds, not ~1 min (M8 decisions 14, 20)",
2026-06-20T11:21:58.5412024Z       "requiredStages": [
2026-06-20T11:21:58.5412401Z         "impl",
2026-06-20T11:21:58.5412697Z         "unit"
2026-06-20T11:21:58.5413005Z       ],
2026-06-20T11:21:58.5413289Z       "stages": {
2026-06-20T11:21:58.5413579Z         "doc": {
2026-06-20T11:21:58.5413976Z           "complete": false,
2026-06-20T11:21:58.5414262Z           "evidence": []
2026-06-20T11:21:58.5414553Z         },
2026-06-20T11:21:58.5414833Z         "impl": {
2026-06-20T11:21:58.5415144Z           "complete": true,
2026-06-20T11:21:58.5415471Z           "evidence": [
2026-06-20T11:21:58.5415792Z             {
2026-06-20T11:21:58.5416252Z               "path": "crates/spt-daemon/src/nethost.rs",
2026-06-20T11:21:58.5416547Z               "line": 938
2026-06-20T11:21:58.5416839Z             },
2026-06-20T11:21:58.5417149Z             {
2026-06-20T11:21:58.5417653Z               "path": "crates/spt-daemon/src/pairhost.rs",
2026-06-20T11:21:58.5417982Z               "line": 94
2026-06-20T11:21:58.5418258Z             },
2026-06-20T11:21:58.5418549Z             {
2026-06-20T11:21:58.5419060Z               "path": "crates/spt-daemon/src/pairhost.rs",
2026-06-20T11:21:58.5419403Z               "line": 345
2026-06-20T11:21:58.5419669Z             },
2026-06-20T11:21:58.5419979Z             {
2026-06-20T11:21:58.5420404Z               "path": "crates/spt-daemon/src/pairhost.rs",
2026-06-20T11:21:58.5420749Z               "line": 387
2026-06-20T11:21:58.5421058Z             },
2026-06-20T11:21:58.5421330Z             {
2026-06-20T11:21:58.5421764Z               "path": "crates/spt-daemon/src/pairhost.rs",
2026-06-20T11:21:58.5422054Z               "line": 472
2026-06-20T11:21:58.5422431Z             },
2026-06-20T11:21:58.5422756Z             {
2026-06-20T11:21:58.5423157Z               "path": "crates/spt-daemon/src/pump/mod.rs",
2026-06-20T11:21:58.5423478Z               "line": 667
2026-06-20T11:21:58.5423762Z             },
2026-06-20T11:21:58.5424091Z             {
2026-06-20T11:21:58.5424602Z               "path": "crates/spt-daemon/src/pump/mod.rs",
2026-06-20T11:21:58.5424903Z               "line": 693
2026-06-20T11:21:58.5425208Z             },
2026-06-20T11:21:58.5425500Z             {
2026-06-20T11:21:58.5425950Z               "path": "crates/spt-net/src/net/endpoint.rs",
2026-06-20T11:21:58.5426263Z               "line": 369
2026-06-20T11:21:58.5426559Z             },
2026-06-20T11:21:58.5426878Z             {
2026-06-20T11:21:58.5427283Z               "path": "crates/spt-store/src/peeraddrs.rs",
2026-06-20T11:21:58.5427626Z               "line": 19
2026-06-20T11:21:58.5427912Z             }
2026-06-20T11:21:58.5428222Z           ]
2026-06-20T11:21:58.5428532Z         },
2026-06-20T11:21:58.5428818Z         "int": {
2026-06-20T11:21:58.5429256Z           "complete": false,
2026-06-20T11:21:58.5429556Z           "evidence": []
2026-06-20T11:21:58.5429861Z         },
2026-06-20T11:21:58.5430152Z         "unit": {
2026-06-20T11:21:58.5430482Z           "complete": true,
2026-06-20T11:21:58.5431072Z           "evidence": [
2026-06-20T11:21:58.5431356Z             {
2026-06-20T11:21:58.5431809Z               "path": "crates/spt-daemon/src/pump/mod.rs",
2026-06-20T11:21:58.5432089Z               "line": 1263
2026-06-20T11:21:58.5432404Z             },
2026-06-20T11:21:58.5432662Z             {
2026-06-20T11:21:58.5433145Z               "path": "crates/spt-store/src/peeraddrs.rs",
2026-06-20T11:21:58.5433488Z               "line": 108
2026-06-20T11:21:58.5433770Z             },
2026-06-20T11:21:58.5434072Z             {
2026-06-20T11:21:58.5434462Z               "path": "crates/spt-store/src/peeraddrs.rs",
2026-06-20T11:21:58.5434976Z               "line": 134
2026-06-20T11:21:58.5435300Z             },
2026-06-20T11:21:58.5435567Z             {
2026-06-20T11:21:58.5435998Z               "path": "crates/spt-store/src/peeraddrs.rs",
2026-06-20T11:21:58.5436274Z               "line": 144
2026-06-20T11:21:58.5436639Z             }
2026-06-20T11:21:58.5436904Z           ]
2026-06-20T11:21:58.5437209Z         }
2026-06-20T11:21:58.5437514Z       }
2026-06-20T11:21:58.5437768Z     },
2026-06-20T11:21:58.5438124Z     {
2026-06-20T11:21:58.5438411Z       "id": "REQ-CONV-2",
2026-06-20T11:21:58.5441804Z       "title": "Event-driven advertisement: endpoint online/offline transitions (ready-listener start/stop, rest-state transition, perch death) trigger an immediate advertise_local + peer push as a WAKE of the existing pump loop (no second advertisement path — epoch lease + visibility gates ride unchanged); the cadence stays the steady-state floor (M8 decision 15)",
2026-06-20T11:21:58.5442165Z       "requiredStages": [
2026-06-20T11:21:58.5442441Z         "impl",
2026-06-20T11:21:58.5442827Z         "unit"
2026-06-20T11:21:58.5443099Z       ],
2026-06-20T11:21:58.5443414Z       "stages": {
2026-06-20T11:21:58.5443701Z         "doc": {
2026-06-20T11:21:58.5444034Z           "complete": false,
2026-06-20T11:21:58.5444410Z           "evidence": []
2026-06-20T11:21:58.5444680Z         },
2026-06-20T11:21:58.5445002Z         "impl": {
2026-06-20T11:21:58.5445303Z           "complete": true,
2026-06-20T11:21:58.5445618Z           "evidence": [
2026-06-20T11:21:58.5445966Z             {
2026-06-20T11:21:58.5446371Z               "path": "crates/spt-daemon/src/lifecycle.rs",
2026-06-20T11:21:58.5446704Z               "line": 409
2026-06-20T11:21:58.5447223Z             },
2026-06-20T11:21:58.5447531Z             {
2026-06-20T11:21:58.5447999Z               "path": "crates/spt-daemon/src/pump/registry.rs",
2026-06-20T11:21:58.5448342Z               "line": 119
2026-06-20T11:21:58.5448647Z             },
2026-06-20T11:21:58.5449052Z             {
2026-06-20T11:21:58.5449511Z               "path": "crates/spt-daemon/src/registryhost.rs",
2026-06-20T11:21:58.5449845Z               "line": 841
2026-06-20T11:21:58.5450167Z             },
2026-06-20T11:21:58.5450434Z             {
2026-06-20T11:21:58.5450892Z               "path": "crates/spt-daemon/src/registryhost.rs",
2026-06-20T11:21:58.5451207Z               "line": 852
2026-06-20T11:21:58.5451521Z             },
2026-06-20T11:21:58.5451845Z             {
2026-06-20T11:21:58.5452235Z               "path": "crates/spt-daemon/src/resting.rs",
2026-06-20T11:21:58.5452575Z               "line": 334
2026-06-20T11:21:58.5452862Z             },
2026-06-20T11:21:58.5453172Z             {
2026-06-20T11:21:58.5453568Z               "path": "crates/spt/src/cli.rs",
2026-06-20T11:21:58.5453854Z               "line": 3074
2026-06-20T11:21:58.5454178Z             },
2026-06-20T11:21:58.5454441Z             {
2026-06-20T11:21:58.5454842Z               "path": "crates/spt/src/cli.rs",
2026-06-20T11:21:58.5455183Z               "line": 3090
2026-06-20T11:21:58.5455471Z             },
2026-06-20T11:21:58.5455781Z             {
2026-06-20T11:21:58.5456125Z               "path": "crates/spt/src/cli.rs",
2026-06-20T11:21:58.5456478Z               "line": 3170
2026-06-20T11:21:58.5456798Z             }
2026-06-20T11:21:58.5457079Z           ]
2026-06-20T11:21:58.5457499Z         },
2026-06-20T11:21:58.5457779Z         "int": {
2026-06-20T11:21:58.5458139Z           "complete": false,
2026-06-20T11:21:58.5458469Z           "evidence": []
2026-06-20T11:21:58.5458774Z         },
2026-06-20T11:21:58.5459164Z         "unit": {
2026-06-20T11:21:58.5459460Z           "complete": true,
2026-06-20T11:21:58.5459812Z           "evidence": [
2026-06-20T11:21:58.5460108Z             {
2026-06-20T11:21:58.5460550Z               "path": "crates/spt-daemon/src/pump/mod.rs",
2026-06-20T11:21:58.5460841Z               "line": 889
2026-06-20T11:21:58.5461146Z             },
2026-06-20T11:21:58.5461471Z             {
2026-06-20T11:21:58.5461900Z               "path": "crates/spt-daemon/src/pump/mod.rs",
2026-06-20T11:21:58.5462330Z               "line": 1014
2026-06-20T11:21:58.5462607Z             },
2026-06-20T11:21:58.5462914Z             {
2026-06-20T11:21:58.5463417Z               "path": "crates/spt-daemon/src/pump/registry.rs",
2026-06-20T11:21:58.5463727Z               "line": 215
2026-06-20T11:21:58.5464037Z             }
2026-06-20T11:21:58.5464305Z           ]
2026-06-20T11:21:58.5464614Z         }
2026-06-20T11:21:58.5464873Z       }
2026-06-20T11:21:58.5465215Z     },
2026-06-20T11:21:58.5465517Z     {
2026-06-20T11:21:58.5465810Z       "id": "REQ-DAEMON-1",
2026-06-20T11:21:58.5466394Z       "title": "One per-machine spt-daemon owning all per-machine state",
2026-06-20T11:21:58.5466680Z       "requiredStages": [
2026-06-20T11:21:58.5467053Z         "impl",
2026-06-20T11:21:58.5467334Z         "unit",
2026-06-20T11:21:58.5467644Z         "int"
2026-06-20T11:21:58.5467964Z       ],
2026-06-20T11:21:58.5468224Z       "stages": {
2026-06-20T11:21:58.5468598Z         "doc": {
2026-06-20T11:21:58.5468908Z           "complete": false,
2026-06-20T11:21:58.5469319Z           "evidence": []
2026-06-20T11:21:58.5469606Z         },
2026-06-20T11:21:58.5469905Z         "impl": {
2026-06-20T11:21:58.5470292Z           "complete": true,
2026-06-20T11:21:58.5470574Z           "evidence": [
2026-06-20T11:21:58.5470899Z             {
2026-06-20T11:21:58.5471302Z               "path": "crates/spt-daemon/src/brainproc.rs",
2026-06-20T11:21:58.5471617Z               "line": 229
2026-06-20T11:21:58.5471974Z             },
2026-06-20T11:21:58.5472246Z             {
2026-06-20T11:21:58.5472680Z               "path": "crates/spt-daemon/src/config.rs",
2026-06-20T11:21:58.5472969Z               "line": 12
2026-06-20T11:21:58.5473649Z             },
2026-06-20T11:21:58.5473977Z             {
2026-06-20T11:21:58.5474912Z               "path": "crates/spt-daemon/src/lifecycle.rs",
2026-06-20T11:21:58.5475241Z               "line": 16
2026-06-20T11:21:58.5475517Z             },
2026-06-20T11:21:58.5475822Z             {
2026-06-20T11:21:58.5476265Z               "path": "crates/spt-daemon/src/lifecycle.rs",
2026-06-20T11:21:58.5476601Z               "line": 309
2026-06-20T11:21:58.5476897Z             },
2026-06-20T11:21:58.5477197Z             {
2026-06-20T11:21:58.5477642Z               "path": "crates/spt-daemon/src/livehost.rs",
2026-06-20T11:21:58.5477981Z               "line": 24
2026-06-20T11:21:58.5478314Z             },
2026-06-20T11:21:58.5478587Z             {
2026-06-20T11:21:58.5479115Z               "path": "crates/spt-daemon/src/livehost.rs",
2026-06-20T11:21:58.5479421Z               "line": 262
2026-06-20T11:21:58.5479736Z             },
2026-06-20T11:21:58.5480069Z             {
2026-06-20T11:21:58.5480461Z               "path": "crates/spt-daemon/src/livehost.rs",
2026-06-20T11:21:58.5480785Z               "line": 279
2026-06-20T11:21:58.5481061Z             },
2026-06-20T11:21:58.5488034Z             {
2026-06-20T11:21:58.5488474Z               "path": "crates/spt-daemon/src/livehost.rs",
2026-06-20T11:21:58.5488759Z               "line": 356
2026-06-20T11:21:58.5489084Z             },
2026-06-20T11:21:58.5489349Z             {
2026-06-20T11:21:58.5489743Z               "path": "crates/spt-daemon/src/livehost.rs",
2026-06-20T11:21:58.5490014Z               "line": 670
2026-06-20T11:21:58.5490262Z             },
2026-06-20T11:21:58.5490672Z             {
2026-06-20T11:21:58.5491035Z               "path": "crates/spt-daemon/src/relay.rs",
2026-06-20T11:21:58.5491297Z               "line": 15
2026-06-20T11:21:58.5491550Z             },
2026-06-20T11:21:58.5491788Z             {
2026-06-20T11:21:58.5492136Z               "path": "crates/spt-store/src/info.rs",
2026-06-20T11:21:58.5492399Z               "line": 241
2026-06-20T11:21:58.5492646Z             },
2026-06-20T11:21:58.5492883Z             {
2026-06-20T11:21:58.5493222Z               "path": "crates/spt/src/api/live.rs",
2026-06-20T11:21:58.5493485Z               "line": 13
2026-06-20T11:21:58.5493728Z             },
2026-06-20T11:21:58.5494109Z             {
2026-06-20T11:21:58.5494466Z               "path": "crates/spt/src/api/startup.rs",
2026-06-20T11:21:58.5494731Z               "line": 382
2026-06-20T11:21:58.5494984Z             },
2026-06-20T11:21:58.5495232Z             {
2026-06-20T11:21:58.5495585Z               "path": "crates/spt/src/api/startup.rs",
2026-06-20T11:21:58.5495857Z               "line": 494
2026-06-20T11:21:58.5496099Z             }
2026-06-20T11:21:58.5496352Z           ]
2026-06-20T11:21:58.5496591Z         },
2026-06-20T11:21:58.5496835Z         "int": {
2026-06-20T11:21:58.5497092Z           "complete": true,
2026-06-20T11:21:58.5497348Z           "evidence": [
2026-06-20T11:21:58.5497584Z             {
2026-06-20T11:21:58.5498109Z               "path": "crates/spt-daemon/tests/daemon_lifecycle_real_brain.rs",
2026-06-20T11:21:58.5498370Z               "line": 2
2026-06-20T11:21:58.5498613Z             },
2026-06-20T11:21:58.5498861Z             {
2026-06-20T11:21:58.5499444Z               "path": "crates/spt-daemon/tests/daemon_lifecycle_real_brain.rs",
2026-06-20T11:21:58.5499716Z               "line": 16
2026-06-20T11:21:58.5499961Z             },
2026-06-20T11:21:58.5500208Z             {
2026-06-20T11:21:58.5500637Z               "path": "crates/spt/tests/live_bind_firsthost_e2e.rs",
2026-06-20T11:21:58.5500884Z               "line": 12
2026-06-20T11:21:58.5501137Z             },
2026-06-20T11:21:58.5501376Z             {
2026-06-20T11:21:58.5501781Z               "path": "crates/spt/tests/live_firsthost_e2e.rs",
2026-06-20T11:21:58.5502048Z               "line": 12
2026-06-20T11:21:58.5502293Z             },
2026-06-20T11:21:58.5502545Z             {
2026-06-20T11:21:58.5502944Z               "path": "crates/spt/tests/livehost_bootrace_e2e.rs",
2026-06-20T11:21:58.5503211Z               "line": 44
2026-06-20T11:21:58.5503448Z             }
2026-06-20T11:21:58.5503697Z           ]
2026-06-20T11:21:58.5503931Z         },
2026-06-20T11:21:58.5504184Z         "unit": {
2026-06-20T11:21:58.5504461Z           "complete": true,
2026-06-20T11:21:58.5504722Z           "evidence": [
2026-06-20T11:21:58.5504970Z             {
2026-06-20T11:21:58.5505334Z               "path": "crates/spt-daemon/src/config.rs",
2026-06-20T11:21:58.5505596Z               "line": 285
2026-06-20T11:21:58.5505850Z             },
2026-06-20T11:21:58.5506098Z             {
2026-06-20T11:21:58.5506469Z               "path": "crates/spt-daemon/src/config.rs",
2026-06-20T11:21:58.5506727Z               "line": 293
2026-06-20T11:21:58.5506978Z             },
2026-06-20T11:21:58.5507222Z             {
2026-06-20T11:21:58.5507580Z               "path": "crates/spt-daemon/src/config.rs",
2026-06-20T11:21:58.5507837Z               "line": 309
2026-06-20T11:21:58.5508084Z             },
2026-06-20T11:21:58.5508330Z             {
2026-06-20T11:21:58.5508688Z               "path": "crates/spt-daemon/src/config.rs",
2026-06-20T11:21:58.5509022Z               "line": 317
2026-06-20T11:21:58.5509259Z             },
2026-06-20T11:21:58.5509517Z             {
2026-06-20T11:21:58.5509889Z               "path": "crates/spt-daemon/src/lifecycle.rs",
2026-06-20T11:21:58.5510156Z               "line": 659
2026-06-20T11:21:58.5510403Z             },
2026-06-20T11:21:58.5510646Z             {
2026-06-20T11:21:58.5511017Z               "path": "crates/spt-daemon/src/lifecycle.rs",
2026-06-20T11:21:58.5511387Z               "line": 729
2026-06-20T11:21:58.5511626Z             },
2026-06-20T11:21:58.5511884Z             {
2026-06-20T11:21:58.5512256Z               "path": "crates/spt-daemon/src/livehost.rs",
2026-06-20T11:21:58.5512524Z               "line": 1211
2026-06-20T11:21:58.5512766Z             },
2026-06-20T11:21:58.5513009Z             {
2026-06-20T11:21:58.5513379Z               "path": "crates/spt-daemon/src/livehost.rs",
2026-06-20T11:21:58.5513670Z               "line": 1248
2026-06-20T11:21:58.5513914Z             },
2026-06-20T11:21:58.5514157Z             {
2026-06-20T11:21:58.5514534Z               "path": "crates/spt-daemon/src/livehost.rs",
2026-06-20T11:21:58.5514896Z               "line": 1271
2026-06-20T11:21:58.5515140Z             },
2026-06-20T11:21:58.5515389Z             {
2026-06-20T11:21:58.5515772Z               "path": "crates/spt-daemon/src/livehost.rs",
2026-06-20T11:21:58.5516042Z               "line": 1300
2026-06-20T11:21:58.5516285Z             },
2026-06-20T11:21:58.5516542Z             {
2026-06-20T11:21:58.5516909Z               "path": "crates/spt-daemon/src/livehost.rs",
2026-06-20T11:21:58.5517191Z               "line": 1348
2026-06-20T11:21:58.5517430Z             },
2026-06-20T11:21:58.5517673Z             {
2026-06-20T11:21:58.5518044Z               "path": "crates/spt-daemon/src/livehost.rs",
2026-06-20T11:21:58.5518303Z               "line": 1391
2026-06-20T11:21:58.5518553Z             },
2026-06-20T11:21:58.5518794Z             {
2026-06-20T11:21:58.5519224Z               "path": "crates/spt-daemon/src/relay.rs",
2026-06-20T11:21:58.5519491Z               "line": 106
2026-06-20T11:21:58.5519738Z             },
2026-06-20T11:21:58.5519991Z             {
2026-06-20T11:21:58.5520344Z               "path": "crates/spt-daemon/src/relay.rs",
2026-06-20T11:21:58.5520611Z               "line": 132
2026-06-20T11:21:58.5520860Z             },
2026-06-20T11:21:58.5521101Z             {
2026-06-20T11:21:58.5521457Z               "path": "crates/spt-store/src/info.rs",
2026-06-20T11:21:58.5521723Z               "line": 530
2026-06-20T11:21:58.5521966Z             }
2026-06-20T11:21:58.5522205Z           ]
2026-06-20T11:21:58.5522449Z         }
2026-06-20T11:21:58.5522682Z       }
2026-06-20T11:21:58.5522930Z     },
2026-06-20T11:21:58.5523173Z     {
2026-06-20T11:21:58.5523446Z       "id": "REQ-DAEMON-2",
2026-06-20T11:21:58.5523868Z       "title": "Broker/brain split for seamless self-update",
2026-06-20T11:21:58.5524150Z       "requiredStages": [
2026-06-20T11:21:58.5524403Z         "impl",
2026-06-20T11:21:58.5524646Z         "unit",
2026-06-20T11:21:58.5524903Z         "int"
2026-06-20T11:21:58.5525146Z       ],
2026-06-20T11:21:58.5525399Z       "stages": {
2026-06-20T11:21:58.5525653Z         "doc": {
2026-06-20T11:21:58.5525920Z           "complete": true,
2026-06-20T11:21:58.5526189Z           "evidence": [
2026-06-20T11:21:58.5526435Z             {
2026-06-20T11:21:58.5526793Z               "path": "docs/TWO-HOST-RUNBOOK.md",
2026-06-20T11:21:58.5527074Z               "line": 250
2026-06-20T11:21:58.5527327Z             }
2026-06-20T11:21:58.5527575Z           ]
2026-06-20T11:21:58.5527813Z         },
2026-06-20T11:21:58.5528080Z         "impl": {
2026-06-20T11:21:58.5528337Z           "complete": true,
2026-06-20T11:21:58.5528604Z           "evidence": [
2026-06-20T11:21:58.5528858Z             {
2026-06-20T11:21:58.5529340Z               "path": "crates/spt-daemon/src/brain.rs",
2026-06-20T11:21:58.5529617Z               "line": 23
2026-06-20T11:21:58.5529861Z             },
2026-06-20T11:21:58.5530095Z             {
2026-06-20T11:21:58.5530442Z               "path": "crates/spt-daemon/src/brain.rs",
2026-06-20T11:21:58.5530709Z               "line": 823
2026-06-20T11:21:58.5530961Z             },
2026-06-20T11:21:58.5531200Z             {
2026-06-20T11:21:58.5531552Z               "path": "crates/spt-daemon/src/brain.rs",
2026-06-20T11:21:58.5531817Z               "line": 848
2026-06-20T11:21:58.5532065Z             },
2026-06-20T11:21:58.5532307Z             {
2026-06-20T11:21:58.5532765Z               "path": "crates/spt-daemon/src/brain.rs",
2026-06-20T11:21:58.5533028Z               "line": 1084
2026-06-20T11:21:58.5533276Z             },
2026-06-20T11:21:58.5533509Z             {
2026-06-20T11:21:58.5533867Z               "path": "crates/spt-daemon/src/broker.rs",
2026-06-20T11:21:58.5534134Z               "line": 32
2026-06-20T11:21:58.5534377Z             },
2026-06-20T11:21:58.5534625Z             {
2026-06-20T11:21:58.5534986Z               "path": "crates/spt-daemon/src/broker.rs",
2026-06-20T11:21:58.5535254Z               "line": 1064
2026-06-20T11:21:58.5535497Z             },
2026-06-20T11:21:58.5535836Z             {
2026-06-20T11:21:58.5536203Z               "path": "crates/spt-daemon/src/broker.rs",
2026-06-20T11:21:58.5536499Z               "line": 1775
2026-06-20T11:21:58.5536754Z             },
2026-06-20T11:21:58.5537000Z             {
2026-06-20T11:21:58.5537357Z               "path": "crates/spt-daemon/src/broker.rs",
2026-06-20T11:21:58.5537629Z               "line": 2062
2026-06-20T11:21:58.5537878Z             },
2026-06-20T11:21:58.5538126Z             {
2026-06-20T11:21:58.5538474Z               "path": "crates/spt-daemon/src/codec.rs",
2026-06-20T11:21:58.5538742Z               "line": 11
2026-06-20T11:21:58.5539056Z             },
2026-06-20T11:21:58.5539303Z             {
2026-06-20T11:21:58.5539655Z               "path": "crates/spt-daemon/src/daemon.rs",
2026-06-20T11:21:58.5539919Z               "line": 153
2026-06-20T11:21:58.5540167Z             },
2026-06-20T11:21:58.5540402Z             {
2026-06-20T11:21:58.5540764Z               "path": "crates/spt-daemon/src/daemon.rs",
2026-06-20T11:21:58.5541036Z               "line": 343
2026-06-20T11:21:58.5541284Z             },
2026-06-20T11:21:58.5541536Z             {
2026-06-20T11:21:58.5541865Z               "path": "crates/spt-daemon/src/msg.rs",
2026-06-20T11:21:58.5542122Z               "line": 13
2026-06-20T11:21:58.5542363Z             },
2026-06-20T11:21:58.5542610Z             {
2026-06-20T11:21:58.5542983Z               "path": "crates/spt-daemon/src/nethost.rs",
2026-06-20T11:21:58.5543231Z               "line": 27
2026-06-20T11:21:58.5543478Z             },
2026-06-20T11:21:58.5543717Z             {
2026-06-20T11:21:58.5544088Z               "path": "crates/spt-daemon/src/nethost.rs",
2026-06-20T11:21:58.5544356Z               "line": 147
2026-06-20T11:21:58.5544594Z             },
2026-06-20T11:21:58.5544843Z             {
2026-06-20T11:21:58.5545204Z               "path": "crates/spt-daemon/src/nethost.rs",
2026-06-20T11:21:58.5545470Z               "line": 632
2026-06-20T11:21:58.5545713Z             },
2026-06-20T11:21:58.5545971Z             {
2026-06-20T11:21:58.5546328Z               "path": "crates/spt-daemon/src/nethost.rs",
2026-06-20T11:21:58.5546582Z               "line": 853
2026-06-20T11:21:58.5546839Z             },
2026-06-20T11:21:58.5547078Z             {
2026-06-20T11:21:58.5547439Z               "path": "crates/spt-daemon/src/nethost.rs",
2026-06-20T11:21:58.5547703Z               "line": 1000
2026-06-20T11:21:58.5547955Z             },
2026-06-20T11:21:58.5548189Z             {
2026-06-20T11:21:58.5548547Z               "path": "crates/spt-daemon/src/nethost.rs",
2026-06-20T11:21:58.5548814Z               "line": 1089
2026-06-20T11:21:58.5549129Z             },
2026-06-20T11:21:58.5549368Z             {
2026-06-20T11:21:58.5549725Z               "path": "crates/spt-daemon/src/nethost.rs",
2026-06-20T11:21:58.5549989Z               "line": 1211
2026-06-20T11:21:58.5550243Z             },
2026-06-20T11:21:58.5550484Z             {
2026-06-20T11:21:58.5550851Z               "path": "crates/spt-daemon/src/transport.rs",
2026-06-20T11:21:58.5551118Z               "line": 10
2026-06-20T11:21:58.5551367Z             }
2026-06-20T11:21:58.5551596Z           ]
2026-06-20T11:21:58.5551844Z         },
2026-06-20T11:21:58.5552091Z         "int": {
2026-06-20T11:21:58.5552363Z           "complete": true,
2026-06-20T11:21:58.5552630Z           "evidence": [
2026-06-20T11:21:58.5552980Z             {
2026-06-20T11:21:58.5553356Z               "path": "crates/spt-daemon/tests/broker.rs",
2026-06-20T11:21:58.5553619Z               "line": 17
2026-06-20T11:21:58.5553872Z             },
2026-06-20T11:21:58.5554116Z             {
2026-06-20T11:21:58.5554491Z               "path": "crates/spt-daemon/tests/netbroker.rs",
2026-06-20T11:21:58.5554755Z               "line": 90
2026-06-20T11:21:58.5554997Z             },
2026-06-20T11:21:58.5555240Z             {
2026-06-20T11:21:58.5555615Z               "path": "crates/spt-daemon/tests/netbroker.rs",
2026-06-20T11:21:58.5555878Z               "line": 110
2026-06-20T11:21:58.5556121Z             },
2026-06-20T11:21:58.5556465Z             {
2026-06-20T11:21:58.5556850Z               "path": "crates/spt-daemon/tests/netbroker.rs",
2026-06-20T11:21:58.5557117Z               "line": 186
2026-06-20T11:21:58.5557366Z             },
2026-06-20T11:21:58.5557610Z             {
2026-06-20T11:21:58.5557999Z               "path": "crates/spt-daemon/tests/netbroker.rs",
2026-06-20T11:21:58.5558263Z               "line": 309
2026-06-20T11:21:58.5558497Z             },
2026-06-20T11:21:58.5558750Z             {
2026-06-20T11:21:58.5559204Z               "path": "crates/spt-daemon/tests/netstream.rs",
2026-06-20T11:21:58.5559470Z               "line": 128
2026-06-20T11:21:58.5559722Z             },
2026-06-20T11:21:58.5559965Z             {
2026-06-20T11:21:58.5560322Z               "path": "crates/spt/tests/brain_survive.rs",
2026-06-20T11:21:58.5560577Z               "line": 59
2026-06-20T11:21:58.5560818Z             }
2026-06-20T11:21:58.5561068Z           ]
2026-06-20T11:21:58.5561311Z         },
2026-06-20T11:21:58.5561570Z         "unit": {
2026-06-20T11:21:58.5561827Z           "complete": true,
2026-06-20T11:21:58.5562094Z           "evidence": [
2026-06-20T11:21:58.5562332Z             {
2026-06-20T11:21:58.5562685Z               "path": "crates/spt-daemon/src/codec.rs",
2026-06-20T11:21:58.5562942Z               "line": 62
2026-06-20T11:21:58.5563199Z             },
2026-06-20T11:21:58.5563437Z             {
2026-06-20T11:21:58.5563784Z               "path": "crates/spt-daemon/src/codec.rs",
2026-06-20T11:21:58.5564046Z               "line": 76
2026-06-20T11:21:58.5564288Z             },
2026-06-20T11:21:58.5564531Z             {
2026-06-20T11:21:58.5564865Z               "path": "crates/spt-daemon/src/codec.rs",
2026-06-20T11:21:58.5565123Z               "line": 88
2026-06-20T11:21:58.5565357Z             },
2026-06-20T11:21:58.5565591Z             {
2026-06-20T11:21:58.5565945Z               "path": "crates/spt-daemon/src/effect.rs",
2026-06-20T11:21:58.5566209Z               "line": 347
2026-06-20T11:21:58.5566457Z             },
2026-06-20T11:21:58.5566701Z             {
2026-06-20T11:21:58.5567049Z               "path": "crates/spt-daemon/src/msg.rs",
2026-06-20T11:21:58.5567316Z               "line": 873
2026-06-20T11:21:58.5567545Z             },
2026-06-20T11:21:58.5567787Z             {
2026-06-20T11:21:58.5568121Z               "path": "crates/spt-daemon/src/msg.rs",
2026-06-20T11:21:58.5568397Z               "line": 881
2026-06-20T11:21:58.5568643Z             },
2026-06-20T11:21:58.5568882Z             {
2026-06-20T11:21:58.5569310Z               "path": "crates/spt-daemon/src/msg.rs",
2026-06-20T11:21:58.5569572Z               "line": 898
2026-06-20T11:21:58.5569826Z             },
2026-06-20T11:21:58.5570063Z             {
2026-06-20T11:21:58.5570403Z               "path": "crates/spt-daemon/src/msg.rs",
2026-06-20T11:21:58.5570659Z               "line": 974
2026-06-20T11:21:58.5570897Z             },
2026-06-20T11:21:58.5571146Z             {
2026-06-20T11:21:58.5571501Z               "path": "crates/spt-daemon/src/nethost.rs",
2026-06-20T11:21:58.5571772Z               "line": 1282
2026-06-20T11:21:58.5572015Z             },
2026-06-20T11:21:58.5572258Z             {
2026-06-20T11:21:58.5572616Z               "path": "crates/spt-daemon/src/nethost.rs",
2026-06-20T11:21:58.5572882Z               "line": 1294
2026-06-20T11:21:58.5573221Z             },
2026-06-20T11:21:58.5573464Z             {
2026-06-20T11:21:58.5573831Z               "path": "crates/spt-daemon/src/transport.rs",
2026-06-20T11:21:58.5574095Z               "line": 110
2026-06-20T11:21:58.5574349Z             },
2026-06-20T11:21:58.5574587Z             {
2026-06-20T11:21:58.5574963Z               "path": "crates/spt-daemon/tests/resume.rs",
2026-06-20T11:21:58.5575245Z               "line": 145
2026-06-20T11:21:58.5575487Z             }
2026-06-20T11:21:58.5575730Z           ]
2026-06-20T11:21:58.5575974Z         }
2026-06-20T11:21:58.5576228Z       }
2026-06-20T11:21:58.5576466Z     },
2026-06-20T11:21:58.5576707Z     {
2026-06-20T11:21:58.5577108Z       "id": "REQ-DAEMON-3",
2026-06-20T11:21:58.5577585Z       "title": "Any api invocation auto-starts the daemon if absent",
2026-06-20T11:21:58.5577861Z       "requiredStages": [
2026-06-20T11:21:58.5578110Z         "impl",
2026-06-20T11:21:58.5578367Z         "unit",
2026-06-20T11:21:58.5578614Z         "int"
2026-06-20T11:21:58.5578857Z       ],
2026-06-20T11:21:58.5579193Z       "stages": {
2026-06-20T11:21:58.5579437Z         "doc": {
2026-06-20T11:21:58.5579713Z           "complete": false,
2026-06-20T11:21:58.5579979Z           "evidence": []
2026-06-20T11:21:58.5580223Z         },
2026-06-20T11:21:58.5580476Z         "impl": {
2026-06-20T11:21:58.5580738Z           "complete": true,
2026-06-20T11:21:58.5581001Z           "evidence": [
2026-06-20T11:21:58.5581239Z             {
2026-06-20T11:21:58.5581607Z               "path": "crates/spt-daemon/src/daemon.rs",
2026-06-20T11:21:58.5581862Z               "line": 14
2026-06-20T11:21:58.5582117Z             },
2026-06-20T11:21:58.5582371Z             {
2026-06-20T11:21:58.5582737Z               "path": "crates/spt-daemon/src/endpoint.rs",
2026-06-20T11:21:58.5582990Z               "line": 11
2026-06-20T11:21:58.5583243Z             },
2026-06-20T11:21:58.5583510Z             {
2026-06-20T11:21:58.5583830Z               "path": "crates/spt/src/api/mod.rs",
2026-06-20T11:21:58.5584096Z               "line": 305
2026-06-20T11:21:58.5584334Z             },
2026-06-20T11:21:58.5584576Z             {
2026-06-20T11:21:58.5584894Z               "path": "crates/spt/src/cli.rs",
2026-06-20T11:21:58.5585157Z               "line": 1956
2026-06-20T11:21:58.5585413Z             },
2026-06-20T11:21:58.5585651Z             {
2026-06-20T11:21:58.5585961Z               "path": "crates/spt/src/cli.rs",
2026-06-20T11:21:58.5586224Z               "line": 4235
2026-06-20T11:21:58.5586473Z             },
2026-06-20T11:21:58.5586716Z             {
2026-06-20T11:21:58.5587027Z               "path": "crates/spt/src/cli.rs",
2026-06-20T11:21:58.5587291Z               "line": 4256
2026-06-20T11:21:58.5587539Z             }
2026-06-20T11:21:58.5587787Z           ]
2026-06-20T11:21:58.5588027Z         },
2026-06-20T11:21:58.5588268Z         "int": {
2026-06-20T11:21:58.5588550Z           "complete": true,
2026-06-20T11:21:58.5588798Z           "evidence": [
2026-06-20T11:21:58.5589117Z             {
2026-06-20T11:21:58.5589479Z               "path": "crates/spt/tests/contract_e2e.rs",
2026-06-20T11:21:58.5589739Z               "line": 49
2026-06-20T11:21:58.5589992Z             },
2026-06-20T11:21:58.5590229Z             {
2026-06-20T11:21:58.5590598Z               "path": "crates/spt/tests/contract_e2e.rs",
2026-06-20T11:21:58.5590859Z               "line": 487
2026-06-20T11:21:58.5591112Z             }
2026-06-20T11:21:58.5591355Z           ]
2026-06-20T11:21:58.5591594Z         },
2026-06-20T11:21:58.5591848Z         "unit": {
2026-06-20T11:21:58.5592109Z           "complete": true,
2026-06-20T11:21:58.5592374Z           "evidence": [
2026-06-20T11:21:58.5592607Z             {
2026-06-20T11:21:58.5592983Z               "path": "crates/spt-daemon/src/daemon.rs",
2026-06-20T11:21:58.5593245Z               "line": 1553
2026-06-20T11:21:58.5593493Z             },
2026-06-20T11:21:58.5593731Z             {
2026-06-20T11:21:58.5594046Z               "path": "crates/spt/src/cli.rs",
2026-06-20T11:21:58.5594419Z               "line": 10715
2026-06-20T11:21:58.5594656Z             }
2026-06-20T11:21:58.5594908Z           ]
2026-06-20T11:21:58.5595141Z         }
2026-06-20T11:21:58.5595387Z       }
2026-06-20T11:21:58.5595625Z     },
2026-06-20T11:21:58.5595864Z     {
2026-06-20T11:21:58.5596131Z       "id": "REQ-DAEMON-4",
2026-06-20T11:21:58.5596494Z       "title": "Honor every KNOWN-HAZARDS invariant",
2026-06-20T11:21:58.5596774Z       "requiredStages": [
2026-06-20T11:21:58.5597019Z         "impl",
2026-06-20T11:21:58.5597272Z         "unit",
2026-06-20T11:21:58.5597514Z         "int"
2026-06-20T11:21:58.5597747Z       ],
2026-06-20T11:21:58.5597995Z       "stages": {
2026-06-20T11:21:58.5598347Z         "doc": {
2026-06-20T11:21:58.5598620Z           "complete": false,
2026-06-20T11:21:58.5598877Z           "evidence": []
2026-06-20T11:21:58.5599211Z         },
2026-06-20T11:21:58.5599468Z         "impl": {
2026-06-20T11:21:58.5599730Z           "complete": true,
2026-06-20T11:21:58.5599992Z           "evidence": [
2026-06-20T11:21:58.5600230Z             {
2026-06-20T11:21:58.5600619Z               "path": "crates/spt-daemon/src/lifecycle.rs",
2026-06-20T11:21:58.5600881Z               "line": 464
2026-06-20T11:21:58.5601129Z             },
2026-06-20T11:21:58.5601376Z             {
2026-06-20T11:21:58.5601749Z               "path": "crates/spt-daemon/src/lifecycle.rs",
2026-06-20T11:21:58.5602010Z               "line": 529
2026-06-20T11:21:58.5602244Z             },
2026-06-20T11:21:58.5602493Z             {
2026-06-20T11:21:58.5602864Z               "path": "crates/spt-daemon/src/lifecycle.rs",
2026-06-20T11:21:58.5603125Z               "line": 551
2026-06-20T11:21:58.5603371Z             }
2026-06-20T11:21:58.5603623Z           ]
2026-06-20T11:21:58.5603871Z         },
2026-06-20T11:21:58.5604101Z         "int": {
2026-06-20T11:21:58.5604378Z           "complete": true,
2026-06-20T11:21:58.5604635Z           "evidence": [
2026-06-20T11:21:58.5604882Z             {
2026-06-20T11:21:58.5605284Z               "path": "crates/spt-daemon/tests/daemon_e2e.rs",
2026-06-20T11:21:58.5605544Z               "line": 42
2026-06-20T11:21:58.5605790Z             }
2026-06-20T11:21:58.5606034Z           ]
2026-06-20T11:21:58.5606282Z         },
2026-06-20T11:21:58.5606529Z         "unit": {
2026-06-20T11:21:58.5606814Z           "complete": true,
2026-06-20T11:21:58.5607073Z           "evidence": [
2026-06-20T11:21:58.5607316Z             {
2026-06-20T11:21:58.5607677Z               "path": "crates/spt-daemon/src/config.rs",
2026-06-20T11:21:58.5607932Z               "line": 428
2026-06-20T11:21:58.5608175Z             },
2026-06-20T11:21:58.5608406Z             {
2026-06-20T11:21:58.5608778Z               "path": "crates/spt-daemon/src/lifecycle.rs",
2026-06-20T11:21:58.5609369Z               "line": 957
2026-06-20T11:21:58.5609609Z             },
2026-06-20T11:21:58.5609861Z             {
2026-06-20T11:21:58.5610237Z               "path": "crates/spt-daemon/src/lifecycle.rs",
2026-06-20T11:21:58.5610505Z               "line": 1027
2026-06-20T11:21:58.5610756Z             },
2026-06-20T11:21:58.5610992Z             {
2026-06-20T11:21:58.5611364Z               "path": "crates/spt-daemon/src/lifecycle.rs",
2026-06-20T11:21:58.5611626Z               "line": 1057
2026-06-20T11:21:58.5611874Z             },
2026-06-20T11:21:58.5612113Z             {
2026-06-20T11:21:58.5612485Z               "path": "crates/spt-daemon/src/lifecycle.rs",
2026-06-20T11:21:58.5612747Z               "line": 1090
2026-06-20T11:21:58.5613002Z             }
2026-06-20T11:21:58.5613249Z           ]
2026-06-20T11:21:58.5613486Z         }
2026-06-20T11:21:58.5613736Z       }
2026-06-20T11:21:58.5613979Z     },
2026-06-20T11:21:58.5614227Z     {
2026-06-20T11:21:58.5614502Z       "id": "REQ-DAEMON-5",
2026-06-20T11:21:58.5618407Z       "title": "Pump liveness: the peer pump writes a last-tick heartbeat consumed by daemon status / subnet status (decision 23 render legs in REQ-CLI-2/REQ-SUBNET-8); the daemon supervises the pump task — a panic is caught, logged loudly, and the pump restarts with capped backoff (≤5 min), so a 5.9-class death self-heals visibly instead of silently halving the daemon (M8 decision 23; field motivation: hfenduleam 2026-06-07 half-death)",
2026-06-20T11:21:58.5618811Z       "requiredStages": [
2026-06-20T11:21:58.5619276Z         "impl",
2026-06-20T11:21:58.5619576Z         "unit"
2026-06-20T11:21:58.5619806Z       ],
2026-06-20T11:21:58.5620060Z       "stages": {
2026-06-20T11:21:58.5620312Z         "doc": {
2026-06-20T11:21:58.5620593Z           "complete": false,
2026-06-20T11:21:58.5620859Z           "evidence": []
2026-06-20T11:21:58.5621093Z         },
2026-06-20T11:21:58.5621345Z         "impl": {
2026-06-20T11:21:58.5621739Z           "complete": true,
2026-06-20T11:21:58.5622006Z           "evidence": [
2026-06-20T11:21:58.5622254Z             {
2026-06-20T11:21:58.5622640Z               "path": "crates/spt-daemon/src/pump/mod.rs",
2026-06-20T11:21:58.5622908Z               "line": 476
2026-06-20T11:21:58.5623154Z             },
2026-06-20T11:21:58.5623412Z             {
2026-06-20T11:21:58.5623775Z               "path": "crates/spt-daemon/src/pump/mod.rs",
2026-06-20T11:21:58.5624046Z               "line": 769
2026-06-20T11:21:58.5624292Z             },
2026-06-20T11:21:58.5624530Z             {
2026-06-20T11:21:58.5624911Z               "path": "crates/spt-daemon/src/pump/mod.rs",
2026-06-20T11:21:58.5625174Z               "line": 782
2026-06-20T11:21:58.5625417Z             },
2026-06-20T11:21:58.5625655Z             {
2026-06-20T11:21:58.5626022Z               "path": "crates/spt-daemon/src/pump/mod.rs",
2026-06-20T11:21:58.5626303Z               "line": 800
2026-06-20T11:21:58.5626551Z             },
2026-06-20T11:21:58.5626812Z             {
2026-06-20T11:21:58.5627164Z               "path": "crates/spt-daemon/src/pump/mod.rs",
2026-06-20T11:21:58.5627431Z               "line": 841
2026-06-20T11:21:58.5627688Z             }
2026-06-20T11:21:58.5627925Z           ]
2026-06-20T11:21:58.5628164Z         },
2026-06-20T11:21:58.5628412Z         "int": {
2026-06-20T11:21:58.5628689Z           "complete": false,
2026-06-20T11:21:58.5629014Z           "evidence": []
2026-06-20T11:21:58.5629257Z         },
2026-06-20T11:21:58.5629512Z         "unit": {
2026-06-20T11:21:58.5629775Z           "complete": true,
2026-06-20T11:21:58.5630042Z           "evidence": [
2026-06-20T11:21:58.5630295Z             {
2026-06-20T11:21:58.5630667Z               "path": "crates/spt-daemon/src/pump/mod.rs",
2026-06-20T11:21:58.5630939Z               "line": 1189
2026-06-20T11:21:58.5631182Z             },
2026-06-20T11:21:58.5631425Z             {
2026-06-20T11:21:58.5631795Z               "path": "crates/spt-daemon/src/pump/mod.rs",
2026-06-20T11:21:58.5632079Z               "line": 1213
2026-06-20T11:21:58.5632323Z             },
2026-06-20T11:21:58.5632566Z             {
2026-06-20T11:21:58.5632933Z               "path": "crates/spt-daemon/src/pump/mod.rs",
2026-06-20T11:21:58.5633205Z               "line": 1239
2026-06-20T11:21:58.5633463Z             }
2026-06-20T11:21:58.5633710Z           ]
2026-06-20T11:21:58.5633953Z         }
2026-06-20T11:21:58.5634187Z       }
2026-06-20T11:21:58.5634436Z     },
2026-06-20T11:21:58.5634671Z     {
2026-06-20T11:21:58.5634956Z       "id": "REQ-DAEMON-6",
2026-06-20T11:21:58.5640678Z       "title": "Service-aware `daemon start`/`stop`: when an OS service manager has a registered spt-daemon for this user, `spt daemon start` and `spt daemon stop` drive THAT service (so stop doesn't IPC-kill a unit that auto-restart-fights for the broker socket — the kitsubito 2026-06-08 loop). `start` graduates from a `run` alias to a first-class background verb (ensure-up, idempotent, non-blocking); stop routes managed→manager, manual→IPC. Linux=systemd user unit (`systemctl --user start|stop|is-active spt-daemon`, detected by unit-file presence); Windows=no controllable manager (the logon task is boot-only), so start=detached spawn / stop=IPC.",
2026-06-20T11:21:58.5640974Z       "requiredStages": [
2026-06-20T11:21:58.5641227Z         "impl",
2026-06-20T11:21:58.5641594Z         "unit"
2026-06-20T11:21:58.5641847Z       ],
2026-06-20T11:21:58.5642101Z       "stages": {
2026-06-20T11:21:58.5642342Z         "doc": {
2026-06-20T11:21:58.5642668Z           "complete": false,
2026-06-20T11:21:58.5642921Z           "evidence": []
2026-06-20T11:21:58.5643169Z         },
2026-06-20T11:21:58.5643422Z         "impl": {
2026-06-20T11:21:58.5643699Z           "complete": true,
2026-06-20T11:21:58.5643974Z           "evidence": [
2026-06-20T11:21:58.5644218Z             {
2026-06-20T11:21:58.5644585Z               "path": "crates/spt-daemon/src/daemon.rs",
2026-06-20T11:21:58.5644871Z               "line": 495
2026-06-20T11:21:58.5645227Z             },
2026-06-20T11:21:58.5645478Z             {
2026-06-20T11:21:58.5645835Z               "path": "crates/spt-daemon/src/daemon.rs",
2026-06-20T11:21:58.5646093Z               "line": 526
2026-06-20T11:21:58.5646332Z             },
2026-06-20T11:21:58.5646580Z             {
2026-06-20T11:21:58.5646938Z               "path": "crates/spt-daemon/src/service.rs",
2026-06-20T11:21:58.5647205Z               "line": 55
2026-06-20T11:21:58.5647447Z             },
2026-06-20T11:21:58.5647685Z             {
2026-06-20T11:21:58.5648045Z               "path": "crates/spt-daemon/src/service.rs",
2026-06-20T11:21:58.5648303Z               "line": 70
2026-06-20T11:21:58.5648546Z             },
2026-06-20T11:21:58.5648784Z             {
2026-06-20T11:21:58.5649180Z               "path": "crates/spt/src/cli.rs",
2026-06-20T11:21:58.5649457Z               "line": 2020
2026-06-20T11:21:58.5649690Z             },
2026-06-20T11:21:58.5649938Z             {
2026-06-20T11:21:58.5650252Z               "path": "crates/spt/src/cli.rs",
2026-06-20T11:21:58.5650524Z               "line": 2046
2026-06-20T11:21:58.5650762Z             }
2026-06-20T11:21:58.5651009Z           ]
2026-06-20T11:21:58.5651248Z         },
2026-06-20T11:21:58.5651487Z         "int": {
2026-06-20T11:21:58.5651773Z           "complete": false,
2026-06-20T11:21:58.5652036Z           "evidence": []
2026-06-20T11:21:58.5652288Z         },
2026-06-20T11:21:58.5652535Z         "unit": {
2026-06-20T11:21:58.5652797Z           "complete": true,
2026-06-20T11:21:58.5653063Z           "evidence": [
2026-06-20T11:21:58.5653328Z             {
2026-06-20T11:21:58.5653701Z               "path": "crates/spt-daemon/src/service.rs",
2026-06-20T11:21:58.5653963Z               "line": 288
2026-06-20T11:21:58.5654201Z             },
2026-06-20T11:21:58.5654444Z             {
2026-06-20T11:21:58.5654806Z               "path": "crates/spt-daemon/src/service.rs",
2026-06-20T11:21:58.5655074Z               "line": 299
2026-06-20T11:21:58.5655312Z             },
2026-06-20T11:21:58.5655571Z             {
2026-06-20T11:21:58.5655921Z               "path": "crates/spt-daemon/src/service.rs",
2026-06-20T11:21:58.5656186Z               "line": 325
2026-06-20T11:21:58.5656434Z             },
2026-06-20T11:21:58.5656677Z             {
2026-06-20T11:21:58.5657034Z               "path": "crates/spt-daemon/src/service.rs",
2026-06-20T11:21:58.5657302Z               "line": 351
2026-06-20T11:21:58.5657550Z             }
2026-06-20T11:21:58.5657794Z           ]
2026-06-20T11:21:58.5658046Z         }
2026-06-20T11:21:58.5658288Z       }
2026-06-20T11:21:58.5658530Z     },
2026-06-20T11:21:58.5658772Z     {
2026-06-20T11:21:58.5659120Z       "id": "REQ-DAEMON-7",
2026-06-20T11:21:58.5663206Z       "title": "`daemon run` is foreground-consistent on every platform: the invoking process IS the daemon, blocks until signalled, never auto-detaches or respawns into an invisible background task. The detached/de-elevated background behavior lives ONLY in `start`. Windows: an ELEVATED `daemon run` refuses with guidance (use `start`, or an unelevated shell) instead of respawning detached/de-elevated and vanishing (KH 5.7 preserved — it still never serves elevated).",
2026-06-20T11:21:58.5663500Z       "requiredStages": [
2026-06-20T11:21:58.5663745Z         "impl",
2026-06-20T11:21:58.5663998Z         "unit"
2026-06-20T11:21:58.5664370Z       ],
2026-06-20T11:21:58.5664633Z       "stages": {
2026-06-20T11:21:58.5664871Z         "doc": {
2026-06-20T11:21:58.5665149Z           "complete": false,
2026-06-20T11:21:58.5665405Z           "evidence": []
2026-06-20T11:21:58.5665639Z         },
2026-06-20T11:21:58.5665891Z         "impl": {
2026-06-20T11:21:58.5666164Z           "complete": true,
2026-06-20T11:21:58.5666429Z           "evidence": [
2026-06-20T11:21:58.5666665Z             {
2026-06-20T11:21:58.5667022Z               "path": "crates/spt-daemon/src/daemon.rs",
2026-06-20T11:21:58.5667289Z               "line": 545
2026-06-20T11:21:58.5667533Z             },
2026-06-20T11:21:58.5667781Z             {
2026-06-20T11:21:58.5668277Z               "path": "crates/spt-daemon/src/deelevate.rs",
2026-06-20T11:21:58.5668544Z               "line": 610
2026-06-20T11:21:58.5668787Z             },
2026-06-20T11:21:58.5669109Z             {
2026-06-20T11:21:58.5669470Z               "path": "crates/spt-daemon/src/service.rs",
2026-06-20T11:21:58.5669743Z               "line": 89
2026-06-20T11:21:58.5669991Z             },
2026-06-20T11:21:58.5670234Z             {
2026-06-20T11:21:58.5670548Z               "path": "crates/spt/src/cli.rs",
2026-06-20T11:21:58.5670815Z               "line": 1957
2026-06-20T11:21:58.5671058Z             }
2026-06-20T11:21:58.5671306Z           ]
2026-06-20T11:21:58.5671546Z         },
2026-06-20T11:21:58.5671786Z         "int": {
2026-06-20T11:21:58.5672058Z           "complete": false,
2026-06-20T11:21:58.5672325Z           "evidence": []
2026-06-20T11:21:58.5672564Z         },
2026-06-20T11:21:58.5672817Z         "unit": {
2026-06-20T11:21:58.5673093Z           "complete": true,
2026-06-20T11:21:58.5673360Z           "evidence": [
2026-06-20T11:21:58.5673598Z             {
2026-06-20T11:21:58.5673955Z               "path": "crates/spt-daemon/src/service.rs",
2026-06-20T11:21:58.5674220Z               "line": 314
2026-06-20T11:21:58.5674463Z             },
2026-06-20T11:21:58.5674821Z             {
2026-06-20T11:21:58.5675145Z               "path": "crates/spt/src/cli.rs",
2026-06-20T11:21:58.5675413Z               "line": 8102
2026-06-20T11:21:58.5675704Z             }
2026-06-20T11:21:58.5675950Z           ]
2026-06-20T11:21:58.5676199Z         }
2026-06-20T11:21:58.5676437Z       }
2026-06-20T11:21:58.5676691Z     },
2026-06-20T11:21:58.5676932Z     {
2026-06-20T11:21:58.5677201Z       "id": "REQ-DAEMON-8",
2026-06-20T11:21:58.5680097Z       "title": "Internal auto-start prefers the service: `ensure_running` (any spt command's implicit daemon start, REQ-DAEMON-3) routes through the service-aware start path — when a manager has a registered service it starts THAT, never a competing manual `spawn_detached` daemon that would fight the service for the socket.",
2026-06-20T11:21:58.5680378Z       "requiredStages": [
2026-06-20T11:21:58.5680632Z         "impl",
2026-06-20T11:21:58.5680880Z         "unit"
2026-06-20T11:21:58.5681113Z       ],
2026-06-20T11:21:58.5681375Z       "stages": {
2026-06-20T11:21:58.5681613Z         "doc": {
2026-06-20T11:21:58.5681899Z           "complete": false,
2026-06-20T11:21:58.5682163Z           "evidence": []
2026-06-20T11:21:58.5682409Z         },
2026-06-20T11:21:58.5682666Z         "impl": {
2026-06-20T11:21:58.5682933Z           "complete": true,
2026-06-20T11:21:58.5683196Z           "evidence": [
2026-06-20T11:21:58.5683439Z             {
2026-06-20T11:21:58.5683801Z               "path": "crates/spt-daemon/src/daemon.rs",
2026-06-20T11:21:58.5684065Z               "line": 445
2026-06-20T11:21:58.5684389Z             },
2026-06-20T11:21:58.5688448Z             {
2026-06-20T11:21:58.5688887Z               "path": "crates/spt-daemon/src/service.rs",
2026-06-20T11:21:58.5689363Z               "line": 56
2026-06-20T11:21:58.5689611Z             }
2026-06-20T11:21:58.5689851Z           ]
2026-06-20T11:21:58.5690102Z         },
2026-06-20T11:21:58.5690361Z         "int": {
2026-06-20T11:21:58.5690633Z           "complete": false,
2026-06-20T11:21:58.5690915Z           "evidence": []
2026-06-20T11:21:58.5691325Z         },
2026-06-20T11:21:58.5691568Z         "unit": {
2026-06-20T11:21:58.5691845Z           "complete": true,
2026-06-20T11:21:58.5692112Z           "evidence": [
2026-06-20T11:21:58.5692351Z             {
2026-06-20T11:21:58.5692723Z               "path": "crates/spt-daemon/src/service.rs",
2026-06-20T11:21:58.5692974Z               "line": 288
2026-06-20T11:21:58.5693231Z             },
2026-06-20T11:21:58.5693460Z             {
2026-06-20T11:21:58.5693831Z               "path": "crates/spt-daemon/src/service.rs",
2026-06-20T11:21:58.5694095Z               "line": 325
2026-06-20T11:21:58.5694347Z             }
2026-06-20T11:21:58.5694591Z           ]
2026-06-20T11:21:58.5694925Z         }
2026-06-20T11:21:58.5695165Z       }
2026-06-20T11:21:58.5695402Z     },
2026-06-20T11:21:58.5695651Z     {
2026-06-20T11:21:58.5695965Z       "id": "REQ-DAEMON-9",
2026-06-20T11:21:58.5702959Z       "title": "Net-bind boot-race resilience: a daemon that comes up net-less (NetHost::start failed — e.g. the systemd unit autostarted before the network/DNS stack was ready, `Failed to create an address lookup service`) must SELF-HEAL — retry the net bring-up in the background with capped backoff and, on success, attach net to the broker + spawn the dispatcher/peer-pump (which today are gated on `net_up` at boot and so never start, leaving the node silently unreachable until a manual restart — kitsubito 2026-06-08). Status surfaces the net-less state honestly (a net-less broker renders as 'no connection', not only a pump-STALLED line with a bogus pre-boot heartbeat age). The installer's autostart unit waits for the network (`Wants=/After=network-online.target`) as belt-and-suspenders.",
2026-06-20T11:21:58.5703274Z       "requiredStages": [
2026-06-20T11:21:58.5703534Z         "impl",
2026-06-20T11:21:58.5703776Z         "unit"
2026-06-20T11:21:58.5704020Z       ],
2026-06-20T11:21:58.5704269Z       "stages": {
2026-06-20T11:21:58.5704521Z         "doc": {
2026-06-20T11:21:58.5704793Z           "complete": false,
2026-06-20T11:21:58.5705059Z           "evidence": []
2026-06-20T11:21:58.5705297Z         },
2026-06-20T11:21:58.5705547Z         "impl": {
2026-06-20T11:21:58.5705826Z           "complete": true,
2026-06-20T11:21:58.5706072Z           "evidence": [
2026-06-20T11:21:58.5706319Z             {
2026-06-20T11:21:58.5706696Z               "path": "crates/spt-daemon/src/brainproc.rs",
2026-06-20T11:21:58.5706963Z               "line": 276
2026-06-20T11:21:58.5707212Z             },
2026-06-20T11:21:58.5707451Z             {
2026-06-20T11:21:58.5707807Z               "path": "crates/spt-daemon/src/broker.rs",
2026-06-20T11:21:58.5708066Z               "line": 1115
2026-06-20T11:21:58.5708319Z             },
2026-06-20T11:21:58.5708569Z             {
2026-06-20T11:21:58.5708929Z               "path": "crates/spt-daemon/src/daemon.rs",
2026-06-20T11:21:58.5709282Z               "line": 197
2026-06-20T11:21:58.5709525Z             },
2026-06-20T11:21:58.5709778Z             {
2026-06-20T11:21:58.5710136Z               "path": "crates/spt-daemon/src/daemon.rs",
2026-06-20T11:21:58.5710402Z               "line": 344
2026-06-20T11:21:58.5710647Z             },
2026-06-20T11:21:58.5710881Z             {
2026-06-20T11:21:58.5711236Z               "path": "crates/spt-daemon/src/daemon.rs",
2026-06-20T11:21:58.5711496Z               "line": 381
2026-06-20T11:21:58.5711744Z             },
2026-06-20T11:21:58.5711978Z             {
2026-06-20T11:21:58.5712298Z               "path": "crates/spt/src/cli.rs",
2026-06-20T11:21:58.5712560Z               "line": 2075
2026-06-20T11:21:58.5712808Z             }
2026-06-20T11:21:58.5713041Z           ]
2026-06-20T11:21:58.5713289Z         },
2026-06-20T11:21:58.5713537Z         "int": {
2026-06-20T11:21:58.5713810Z           "complete": false,
2026-06-20T11:21:58.5714065Z           "evidence": []
2026-06-20T11:21:58.5714313Z         },
2026-06-20T11:21:58.5714562Z         "unit": {
2026-06-20T11:21:58.5714843Z           "complete": true,
2026-06-20T11:21:58.5715105Z           "evidence": [
2026-06-20T11:21:58.5715463Z             {
2026-06-20T11:21:58.5715825Z               "path": "crates/spt-daemon/src/daemon.rs",
2026-06-20T11:21:58.5716107Z               "line": 1158
2026-06-20T11:21:58.5716357Z             },
2026-06-20T11:21:58.5716589Z             {
2026-06-20T11:21:58.5716908Z               "path": "crates/spt/src/cli.rs",
2026-06-20T11:21:58.5717170Z               "line": 10580
2026-06-20T11:21:58.5717409Z             }
2026-06-20T11:21:58.5717653Z           ]
2026-06-20T11:21:58.5717891Z         }
2026-06-20T11:21:58.5718138Z       }
2026-06-20T11:21:58.5718377Z     },
2026-06-20T11:21:58.5718621Z     {
2026-06-20T11:21:58.5718889Z       "id": "REQ-DOCS-1",
2026-06-20T11:21:58.5719709Z       "title": "Dual-audience docs (human + AI dev-agent), markdown once / two depths",
2026-06-20T11:21:58.5719986Z       "requiredStages": [
2026-06-20T11:21:58.5720244Z         "doc",
2026-06-20T11:21:58.5720491Z         "impl"
2026-06-20T11:21:58.5720729Z       ],
2026-06-20T11:21:58.5720987Z       "stages": {
2026-06-20T11:21:58.5721225Z         "doc": {
2026-06-20T11:21:58.5721494Z           "complete": true,
2026-06-20T11:21:58.5721758Z           "evidence": [
2026-06-20T11:21:58.5722013Z             {
2026-06-20T11:21:58.5722337Z               "path": "docs-site/src/index.md",
2026-06-20T11:21:58.5722595Z               "line": 50
2026-06-20T11:21:58.5722834Z             }
2026-06-20T11:21:58.5723068Z           ]
2026-06-20T11:21:58.5723305Z         },
2026-06-20T11:21:58.5723558Z         "impl": {
2026-06-20T11:21:58.5723830Z           "complete": true,
2026-06-20T11:21:58.5724093Z           "evidence": [
2026-06-20T11:21:58.5724332Z             {
2026-06-20T11:21:58.5724717Z               "path": ".github/workflows/docs-publish.yml",
2026-06-20T11:21:58.5724979Z               "line": 12
2026-06-20T11:21:58.5725230Z             },
2026-06-20T11:21:58.5725469Z             {
2026-06-20T11:21:58.5725784Z               "path": "crates/xtask/src/main.rs",
2026-06-20T11:21:58.5726046Z               "line": 14
2026-06-20T11:21:58.5726295Z             }
2026-06-20T11:21:58.5726533Z           ]
2026-06-20T11:21:58.5726779Z         },
2026-06-20T11:21:58.5727040Z         "int": {
2026-06-20T11:21:58.5727307Z           "complete": false,
2026-06-20T11:21:58.5727569Z           "evidence": []
2026-06-20T11:21:58.5727807Z         },
2026-06-20T11:21:58.5728060Z         "unit": {
2026-06-20T11:21:58.5728327Z           "complete": false,
2026-06-20T11:21:58.5728594Z           "evidence": []
2026-06-20T11:21:58.5728838Z         }
2026-06-20T11:21:58.5729163Z       }
2026-06-20T11:21:58.5729401Z     },
2026-06-20T11:21:58.5729642Z     {
2026-06-20T11:21:58.5729907Z       "id": "REQ-DOCS-2",
2026-06-20T11:21:58.5730388Z       "title": "Sub-10-minute runnable killer quickstart per audience",
2026-06-20T11:21:58.5730655Z       "requiredStages": [
2026-06-20T11:21:58.5730904Z         "doc",
2026-06-20T11:21:58.5731142Z         "int"
2026-06-20T11:21:58.5731391Z       ],
2026-06-20T11:21:58.5731642Z       "stages": {
2026-06-20T11:21:58.5731900Z         "doc": {
2026-06-20T11:21:58.5732166Z           "complete": true,
2026-06-20T11:21:58.5732427Z           "evidence": [
2026-06-20T11:21:58.5732669Z             {
2026-06-20T11:21:58.5733193Z               "path": "docs-site/src/harness-contract/integration-checklist.md",
2026-06-20T11:21:58.5733451Z               "line": 3
2026-06-20T11:21:58.5733694Z             },
2026-06-20T11:21:58.5733938Z             {
2026-06-20T11:21:58.5734310Z               "path": "docs-site/src/quickstart/adapter.md",
2026-06-20T11:21:58.5734568Z               "line": 3
2026-06-20T11:21:58.5734820Z             },
2026-06-20T11:21:58.5735057Z             {
2026-06-20T11:21:58.5735461Z               "path": "docs-site/src/quickstart/messaging.md",
2026-06-20T11:21:58.5735705Z               "line": 3
2026-06-20T11:21:58.5735954Z             }
2026-06-20T11:21:58.5736259Z           ]
2026-06-20T11:21:58.5736503Z         },
2026-06-20T11:21:58.5736740Z         "impl": {
2026-06-20T11:21:58.5737016Z           "complete": false,
2026-06-20T11:21:58.5737392Z           "evidence": []
2026-06-20T11:21:58.5737629Z         },
2026-06-20T11:21:58.5737872Z         "int": {
2026-06-20T11:21:58.5738158Z           "complete": true,
2026-06-20T11:21:58.5738406Z           "evidence": [
2026-06-20T11:21:58.5738648Z             {
2026-06-20T11:21:58.5739093Z               "path": "crates/spt/tests/quickstart_e2e.rs",
2026-06-20T11:21:58.5739365Z               "line": 14
2026-06-20T11:21:58.5739611Z             }
2026-06-20T11:21:58.5739854Z           ]
2026-06-20T11:21:58.5740108Z         },
2026-06-20T11:21:58.5740355Z         "unit": {
2026-06-20T11:21:58.5740624Z           "complete": false,
2026-06-20T11:21:58.5741006Z           "evidence": []
2026-06-20T11:21:58.5741258Z         }
2026-06-20T11:21:58.5741501Z       }
2026-06-20T11:21:58.5741740Z     },
2026-06-20T11:21:58.5741984Z     {
2026-06-20T11:21:58.5742237Z       "id": "REQ-DOCS-3",
2026-06-20T11:21:58.5742731Z       "title": "Diátaxis structure; one canonical way to do X",
2026-06-20T11:21:58.5743006Z       "requiredStages": [
2026-06-20T11:21:58.5743253Z         "doc"
2026-06-20T11:21:58.5743496Z       ],
2026-06-20T11:21:58.5743753Z       "stages": {
2026-06-20T11:21:58.5744012Z         "doc": {
2026-06-20T11:21:58.5744282Z           "complete": true,
2026-06-20T11:21:58.5744546Z           "evidence": [
2026-06-20T11:21:58.5744784Z             {
2026-06-20T11:21:58.5745109Z               "path": "docs-site/src/index.md",
2026-06-20T11:21:58.5745370Z               "line": 42
2026-06-20T11:21:58.5745607Z             }
2026-06-20T11:21:58.5745856Z           ]
2026-06-20T11:21:58.5746089Z         },
2026-06-20T11:21:58.5746346Z         "impl": {
2026-06-20T11:21:58.5746618Z           "complete": false,
2026-06-20T11:21:58.5746881Z           "evidence": []
2026-06-20T11:21:58.5747119Z         },
2026-06-20T11:21:58.5747363Z         "int": {
2026-06-20T11:21:58.5747643Z           "complete": false,
2026-06-20T11:21:58.5747900Z           "evidence": []
2026-06-20T11:21:58.5748146Z         },
2026-06-20T11:21:58.5748389Z         "unit": {
2026-06-20T11:21:58.5748666Z           "complete": false,
2026-06-20T11:21:58.5748917Z           "evidence": []
2026-06-20T11:21:58.5749237Z         }
2026-06-20T11:21:58.5749490Z       }
2026-06-20T11:21:58.5749724Z     },
2026-06-20T11:21:58.5749954Z     {
2026-06-20T11:21:58.5750220Z       "id": "REQ-DOCS-4",
2026-06-20T11:21:58.5750814Z       "title": "Agent-consumable layer (llms.txt, manifest schema, MCP, CLI help)",
2026-06-20T11:21:58.5751075Z       "requiredStages": [
2026-06-20T11:21:58.5751318Z         "doc",
2026-06-20T11:21:58.5751562Z         "impl",
2026-06-20T11:21:58.5751804Z         "unit"
2026-06-20T11:21:58.5752057Z       ],
2026-06-20T11:21:58.5752300Z       "stages": {
2026-06-20T11:21:58.5752549Z         "doc": {
2026-06-20T11:21:58.5752817Z           "complete": true,
2026-06-20T11:21:58.5753073Z           "evidence": [
2026-06-20T11:21:58.5753319Z             {
2026-06-20T11:21:58.5753636Z               "path": "docs/DOCS-STRATEGY.md",
2026-06-20T11:21:58.5753895Z               "line": 35
2026-06-20T11:21:58.5754138Z             }
2026-06-20T11:21:58.5754380Z           ]
2026-06-20T11:21:58.5754628Z         },
2026-06-20T11:21:58.5754881Z         "impl": {
2026-06-20T11:21:58.5755153Z           "complete": true,
2026-06-20T11:21:58.5755411Z           "evidence": [
2026-06-20T11:21:58.5755659Z             {
2026-06-20T11:21:58.5756031Z               "path": "crates/spt-runtime/src/manifest.rs",
2026-06-20T11:21:58.5756286Z               "line": 746
2026-06-20T11:21:58.5756529Z             },
2026-06-20T11:21:58.5756784Z             {
2026-06-20T11:21:58.5757108Z               "path": "crates/xtask/src/main.rs",
2026-06-20T11:21:58.5757755Z               "line": 15
2026-06-20T11:21:58.5758013Z             }
2026-06-20T11:21:58.5758291Z           ]
2026-06-20T11:21:58.5758526Z         },
2026-06-20T11:21:58.5758777Z         "int": {
2026-06-20T11:21:58.5759120Z           "complete": false,
2026-06-20T11:21:58.5759516Z           "evidence": []
2026-06-20T11:21:58.5759759Z         },
2026-06-20T11:21:58.5760012Z         "unit": {
2026-06-20T11:21:58.5760274Z           "complete": true,
2026-06-20T11:21:58.5760538Z           "evidence": [
2026-06-20T11:21:58.5760781Z             {
2026-06-20T11:21:58.5761158Z               "path": "crates/spt-runtime/src/manifest.rs",
2026-06-20T11:21:58.5761418Z               "line": 1682
2026-06-20T11:21:58.5761654Z             }
2026-06-20T11:21:58.5761902Z           ]
2026-06-20T11:21:58.5762131Z         }
2026-06-20T11:21:58.5762374Z       }
2026-06-20T11:21:58.5762607Z     },
2026-06-20T11:21:58.5762851Z     {
2026-06-20T11:21:58.5763123Z       "id": "REQ-DOCS-5",
2026-06-20T11:21:58.5763833Z       "title": "Anti-drift: rustdoc/schema/exports/CLI-help generated + CI-checked",
2026-06-20T11:21:58.5764117Z       "requiredStages": [
2026-06-20T11:21:58.5764364Z         "impl",
2026-06-20T11:21:58.5764607Z         "int"
2026-06-20T11:21:58.5764845Z       ],
2026-06-20T11:21:58.5765108Z       "stages": {
2026-06-20T11:21:58.5765365Z         "doc": {
2026-06-20T11:21:58.5765638Z           "complete": false,
2026-06-20T11:21:58.5765899Z           "evidence": []
2026-06-20T11:21:58.5766142Z         },
2026-06-20T11:21:58.5766395Z         "impl": {
2026-06-20T11:21:58.5766658Z           "complete": true,
2026-06-20T11:21:58.5766923Z           "evidence": [
2026-06-20T11:21:58.5767170Z             {
2026-06-20T11:21:58.5767544Z               "path": "crates/spt-runtime/src/manifest.rs",
2026-06-20T11:21:58.5767810Z               "line": 747
2026-06-20T11:21:58.5768053Z             },
2026-06-20T11:21:58.5768296Z             {
2026-06-20T11:21:58.5768620Z               "path": "crates/xtask/src/main.rs",
2026-06-20T11:21:58.5768893Z               "line": 113
2026-06-20T11:21:58.5769225Z             }
2026-06-20T11:21:58.5769456Z           ]
2026-06-20T11:21:58.5769695Z         },
2026-06-20T11:21:58.5769938Z         "int": {
2026-06-20T11:21:58.5770210Z           "complete": true,
2026-06-20T11:21:58.5770482Z           "evidence": [
2026-06-20T11:21:58.5770721Z             {
2026-06-20T11:21:58.5771031Z               "path": ".github/workflows/ci.yml",
2026-06-20T11:21:58.5771287Z               "line": 126
2026-06-20T11:21:58.5771535Z             },
2026-06-20T11:21:58.5771774Z             {
2026-06-20T11:21:58.5772147Z               "path": "crates/spt-runtime/src/manifest.rs",
2026-06-20T11:21:58.5772410Z               "line": 1719
2026-06-20T11:21:58.5772648Z             }
2026-06-20T11:21:58.5772895Z           ]
2026-06-20T11:21:58.5773130Z         },
2026-06-20T11:21:58.5773378Z         "unit": {
2026-06-20T11:21:58.5773646Z           "complete": false,
2026-06-20T11:21:58.5773917Z           "evidence": []
2026-06-20T11:21:58.5774155Z         }
2026-06-20T11:21:58.5774402Z       }
2026-06-20T11:21:58.5774630Z     },
2026-06-20T11:21:58.5774866Z     {
2026-06-20T11:21:58.5775133Z       "id": "REQ-DOCS-6",
2026-06-20T11:21:58.5776140Z       "title": "spt how-to <topic>: in-binary task-oriented agent instructions (anti-drift; quickstart prompts point agents at it)",
2026-06-20T11:21:58.5776435Z       "requiredStages": [
2026-06-20T11:21:58.5776688Z         "impl",
2026-06-20T11:21:58.5776926Z         "unit",
2026-06-20T11:21:58.5777171Z         "int"
2026-06-20T11:21:58.5777407Z       ],
2026-06-20T11:21:58.5777659Z       "stages": {
2026-06-20T11:21:58.5777904Z         "doc": {
2026-06-20T11:21:58.5778180Z           "complete": true,
2026-06-20T11:21:58.5778433Z           "evidence": [
2026-06-20T11:21:58.5778690Z             {
2026-06-20T11:21:58.5779157Z               "path": "docs-site/src/quickstart/messaging.md",
2026-06-20T11:21:58.5779401Z               "line": 4
2026-06-20T11:21:58.5779656Z             }
2026-06-20T11:21:58.5779897Z           ]
2026-06-20T11:21:58.5780146Z         },
2026-06-20T11:21:58.5780385Z         "impl": {
2026-06-20T11:21:58.5780651Z           "complete": true,
2026-06-20T11:21:58.5780908Z           "evidence": [
2026-06-20T11:21:58.5781142Z             {
2026-06-20T11:21:58.5781571Z               "path": "crates/spt/src/cli.rs",
2026-06-20T11:21:58.5781828Z               "line": 5240
2026-06-20T11:21:58.5782071Z             }
2026-06-20T11:21:58.5782326Z           ]
2026-06-20T11:21:58.5782571Z         },
2026-06-20T11:21:58.5782821Z         "int": {
2026-06-20T11:21:58.5783079Z           "complete": true,
2026-06-20T11:21:58.5783347Z           "evidence": [
2026-06-20T11:21:58.5783585Z             {
2026-06-20T11:21:58.5783961Z               "path": "crates/spt/tests/quickstart_e2e.rs",
2026-06-20T11:21:58.5784211Z               "line": 39
2026-06-20T11:21:58.5784458Z             }
2026-06-20T11:21:58.5784701Z           ]
2026-06-20T11:21:58.5785038Z         },
2026-06-20T11:21:58.5785293Z         "unit": {
2026-06-20T11:21:58.5785552Z           "complete": true,
2026-06-20T11:21:58.5785813Z           "evidence": [
2026-06-20T11:21:58.5786056Z             {
2026-06-20T11:21:58.5786376Z               "path": "crates/spt/src/cli.rs",
2026-06-20T11:21:58.5786633Z               "line": 10742
2026-06-20T11:21:58.5786876Z             }
2026-06-20T11:21:58.5787120Z           ]
2026-06-20T11:21:58.5787359Z         }
2026-06-20T11:21:58.5787597Z       }
2026-06-20T11:21:58.5787834Z     },
2026-06-20T11:21:58.5788068Z     {
2026-06-20T11:21:58.5788349Z       "id": "REQ-ELEVATE-1",
2026-06-20T11:21:58.5797532Z       "title": "Cross-platform self-elevating re-launch for privilege-gated commands: a pure decision seam `decide_elevation_path(os, elevation, interactive_tty, has_display, has_pkexec, has_term_emulator) -> ElevatePath{AlreadyElevated, InlineSudo, UacWindow, Pkexec, TerminalEmulator, PrintHint}` selecting how to re-acquire privilege, and the per-OS impure launchers it dispatches — Windows UAC console (ShellExecuteW `runas` on the abs-exe + verbatim argv; the elevated child does the work, prints 'You can close this window', and pauses for a keypress; the original prints 'Elevated terminal launched…' and exits 0; NEVER pipes the child's stdout back across the privilege boundary), Linux desktop pkexec (preferred, native polkit GUI auth) else x-terminal-emulator -e sudo (fallback list x-terminal-emulator→gnome-terminal→konsole→xterm), the existing interactive-TTY inline sudo, and the headless/no-path floor that prints the absolute-path command. Reused by every gated command (not subnet-specific). Generalizes should_auto_elevate.",
2026-06-20T11:21:58.5797865Z       "requiredStages": [
2026-06-20T11:21:58.5798118Z         "doc",
2026-06-20T11:21:58.5798361Z         "impl",
2026-06-20T11:21:58.5798604Z         "unit"
2026-06-20T11:21:58.5798842Z       ],
2026-06-20T11:21:58.5799166Z       "stages": {
2026-06-20T11:21:58.5799424Z         "doc": {
2026-06-20T11:21:58.5799715Z           "complete": true,
2026-06-20T11:21:58.5799972Z           "evidence": [
2026-06-20T11:21:58.5800216Z             {
2026-06-20T11:21:58.5800488Z               "path": "CONTEXT.md",
2026-06-20T11:21:58.5800753Z               "line": 687
2026-06-20T11:21:58.5800994Z             }
2026-06-20T11:21:58.5801238Z           ]
2026-06-20T11:21:58.5801480Z         },
2026-06-20T11:21:58.5801733Z         "impl": {
2026-06-20T11:21:58.5801994Z           "complete": true,
2026-06-20T11:21:58.5802244Z           "evidence": [
2026-06-20T11:21:58.5802501Z             {
2026-06-20T11:21:58.5802811Z               "path": "crates/spt/src/cli.rs",
2026-06-20T11:21:58.5803074Z               "line": 3572
2026-06-20T11:21:58.5803312Z             },
2026-06-20T11:21:58.5803558Z             {
2026-06-20T11:21:58.5803870Z               "path": "crates/spt/src/cli.rs",
2026-06-20T11:21:58.5804134Z               "line": 3617
2026-06-20T11:21:58.5804382Z             },
2026-06-20T11:21:58.5804624Z             {
2026-06-20T11:21:58.5804934Z               "path": "crates/spt/src/cli.rs",
2026-06-20T11:21:58.5805196Z               "line": 3679
2026-06-20T11:21:58.5805429Z             },
2026-06-20T11:21:58.5805674Z             {
2026-06-20T11:21:58.5806008Z               "path": "crates/spt/src/elevation.rs",
2026-06-20T11:21:58.5806273Z               "line": 92
2026-06-20T11:21:58.5806624Z             },
2026-06-20T11:21:58.5806871Z             {
2026-06-20T11:21:58.5807205Z               "path": "crates/spt/src/elevation.rs",
2026-06-20T11:21:58.5807467Z               "line": 148
2026-06-20T11:21:58.5807706Z             }
2026-06-20T11:21:58.5807954Z           ]
2026-06-20T11:21:58.5808193Z         },
2026-06-20T11:21:58.5808440Z         "int": {
2026-06-20T11:21:58.5808712Z           "complete": false,
2026-06-20T11:21:58.5809044Z           "evidence": []
2026-06-20T11:21:58.5809292Z         },
2026-06-20T11:21:58.5809532Z         "unit": {
2026-06-20T11:21:58.5809808Z           "complete": true,
2026-06-20T11:21:58.5810175Z           "evidence": [
2026-06-20T11:21:58.5810419Z             {
2026-06-20T11:21:58.5810758Z               "path": "crates/spt/src/elevation.rs",
2026-06-20T11:21:58.5811019Z               "line": 442
2026-06-20T11:21:58.5811260Z             },
2026-06-20T11:21:58.5811498Z             {
2026-06-20T11:21:58.5811831Z               "path": "crates/spt/src/elevation.rs",
2026-06-20T11:21:58.5812094Z               "line": 460
2026-06-20T11:21:58.5812332Z             }
2026-06-20T11:21:58.5812578Z           ]
2026-06-20T11:21:58.5812818Z         }
2026-06-20T11:21:58.5813056Z       }
2026-06-20T11:21:58.5813296Z     },
2026-06-20T11:21:58.5813537Z     {
2026-06-20T11:21:58.5813867Z       "id": "REQ-ENDPOINT-LIST-MERGE-LOCAL",
2026-06-20T11:21:58.5819053Z       "title": "`spt endpoint list` always merges this node's LOCAL (unadvertised) perches into the view; the `--local` flag is REMOVED (operator decision 2026-06-17). Rationale: `spt whoami` is a thin alias of `endpoint list` — a just-online agent running `whoami` must see its OWN perch, or it gets an omitted-self view ('chaos'). FIX: drop the `--local` flag + its `--detail` conflict test + the v0.10.0 REQ-PICKER-5 hint line (cli.rs:1678) + cmd_list_local; the bare list merges local perches into the subnet view; fix the whoami alias path accordingly. Run `cargo run -p xtask -- gen` (docs-drift, DEFAULT target). (v0.12.1)",
2026-06-20T11:21:58.5819354Z       "requiredStages": [
2026-06-20T11:21:58.5819595Z         "doc",
2026-06-20T11:21:58.5819843Z         "impl",
2026-06-20T11:21:58.5820087Z         "unit"
2026-06-20T11:21:58.5820325Z       ],
2026-06-20T11:21:58.5820568Z       "stages": {
2026-06-20T11:21:58.5820816Z         "doc": {
2026-06-20T11:21:58.5821087Z           "complete": true,
2026-06-20T11:21:58.5821341Z           "evidence": [
2026-06-20T11:21:58.5821569Z             {
2026-06-20T11:21:58.5821859Z               "path": "CONTEXT.md",
2026-06-20T11:21:58.5822119Z               "line": 711
2026-06-20T11:21:58.5822353Z             }
2026-06-20T11:21:58.5822610Z           ]
2026-06-20T11:21:58.5822848Z         },
2026-06-20T11:21:58.5823096Z         "impl": {
2026-06-20T11:21:58.5823364Z           "complete": true,
2026-06-20T11:21:58.5823630Z           "evidence": [
2026-06-20T11:21:58.5823870Z             {
2026-06-20T11:21:58.5824190Z               "path": "crates/spt/src/cli.rs",
2026-06-20T11:21:58.5824461Z               "line": 1721
2026-06-20T11:21:58.5824702Z             },
2026-06-20T11:21:58.5824953Z             {
2026-06-20T11:21:58.5825259Z               "path": "crates/spt/src/cli.rs",
2026-06-20T11:21:58.5825516Z               "line": 3125
2026-06-20T11:21:58.5825759Z             },
2026-06-20T11:21:58.5826006Z             {
2026-06-20T11:21:58.5826316Z               "path": "crates/spt/src/cli.rs",
2026-06-20T11:21:58.5826578Z               "line": 3134
2026-06-20T11:21:58.5826827Z             }
2026-06-20T11:21:58.5827062Z           ]
2026-06-20T11:21:58.5827302Z         },
2026-06-20T11:21:58.5827548Z         "int": {
2026-06-20T11:21:58.5827835Z           "complete": false,
2026-06-20T11:21:58.5828097Z           "evidence": []
2026-06-20T11:21:58.5828335Z         },
2026-06-20T11:21:58.5828587Z         "unit": {
2026-06-20T11:21:58.5828854Z           "complete": true,
2026-06-20T11:21:58.5829197Z           "evidence": [
2026-06-20T11:21:58.5829435Z             {
2026-06-20T11:21:58.5829866Z               "path": "crates/spt/src/cli.rs",
2026-06-20T11:21:58.5830127Z               "line": 7950
2026-06-20T11:21:58.5830376Z             },
2026-06-20T11:21:58.5830623Z             {
2026-06-20T11:21:58.5830929Z               "path": "crates/spt/src/cli.rs",
2026-06-20T11:21:58.5831185Z               "line": 7991
2026-06-20T11:21:58.5831433Z             }
2026-06-20T11:21:58.5831676Z           ]
2026-06-20T11:21:58.5831916Z         }
2026-06-20T11:21:58.5832154Z       }
2026-06-20T11:21:58.5832386Z     },
2026-06-20T11:21:58.5832627Z     {
2026-06-20T11:21:58.5832923Z       "id": "REQ-ENDPOINT-PURGE",
2026-06-20T11:21:58.5846191Z       "title": "`spt endpoint purge <id>` fully removes an endpoint AND every record keyed on it — the formal teardown devs/CI need for clean test setup/reset. NOT consent-gated (a local dev/test op — no peer consent). OFFLINE-ONLY: refuses while the endpoint is online / daemon-hosted (deleting records out from under a live host risks the daemon re-creating or re-hosting mid-purge); `--force` STOPS it first (endpoint stop → wait for the daemon reconcile to un-host + reap the Psyche) THEN purges. Confirms interactively unless `--yes` (the CI path). Refuses purging the CALLER's OWN running id. All LOCAL — purge reaches only THIS node's records; a remote endpoint's records can't be touched, and its subnet-registry rows decay via the epoch-lease eviction (REQ-HAZARD-REGISTRY-DECAY). Removes: (1) the perch dir TREE recursively — owlery/<id>/ incl every nested {id}-psyche / {id}-w* / shells child (info.json, ready marker, sessions.log ledger, spool.db, inbox, .idle/.more-done sentinels, auth token); (2) the registry address (registry::unregister_address); (3) the context store — ContextStore::remove_endpoint(id): the a-<id> branch+worktree + the <id>/ rows from every p-<project> branch (the same fn `fork --delete-source` already uses); (4) node-local trust rows keyed on the id — access.json + visibility.json. Reuse-heavy: it is `fork --delete-source` generalized (recursive perch remove + unregister + remove_endpoint) + the trust-record cleanup; `endpoint rename` already enumerates the same record set + uses the same offline-only gate. (v0.12.0)",
2026-06-20T11:21:58.5846669Z       "requiredStages": [
2026-06-20T11:21:58.5846909Z         "doc",
2026-06-20T11:21:58.5847160Z         "impl",
2026-06-20T11:21:58.5847418Z         "unit",
2026-06-20T11:21:58.5847661Z         "int"
2026-06-20T11:21:58.5847905Z       ],
2026-06-20T11:21:58.5848158Z       "stages": {
2026-06-20T11:21:58.5848394Z         "doc": {
2026-06-20T11:21:58.5848664Z           "complete": true,
2026-06-20T11:21:58.5848927Z           "evidence": [
2026-06-20T11:21:58.5849331Z             {
2026-06-20T11:21:58.5849636Z               "path": "CONTEXT.md",
2026-06-20T11:21:58.5849899Z               "line": 163
2026-06-20T11:21:58.5850138Z             }
2026-06-20T11:21:58.5850385Z           ]
2026-06-20T11:21:58.5850619Z         },
2026-06-20T11:21:58.5850871Z         "impl": {
2026-06-20T11:21:58.5851139Z           "complete": true,
2026-06-20T11:21:58.5851395Z           "evidence": [
2026-06-20T11:21:58.5851638Z             {
2026-06-20T11:21:58.5852006Z               "path": "crates/spt-store/src/visibility.rs",
2026-06-20T11:21:58.5852267Z               "line": 105
2026-06-20T11:21:58.5852502Z             },
2026-06-20T11:21:58.5852740Z             {
2026-06-20T11:21:58.5853055Z               "path": "crates/spt/src/cli.rs",
2026-06-20T11:21:58.5853313Z               "line": 7219
2026-06-20T11:21:58.5853553Z             }
2026-06-20T11:21:58.5853790Z           ]
2026-06-20T11:21:58.5854034Z         },
2026-06-20T11:21:58.5854281Z         "int": {
2026-06-20T11:21:58.5854577Z           "complete": true,
2026-06-20T11:21:58.5854843Z           "evidence": [
2026-06-20T11:21:58.5855086Z             {
2026-06-20T11:21:58.5855397Z               "path": "crates/spt/src/cli.rs",
2026-06-20T11:21:58.5855654Z               "line": 7384
2026-06-20T11:21:58.5855903Z             }
2026-06-20T11:21:58.5856142Z           ]
2026-06-20T11:21:58.5856487Z         },
2026-06-20T11:21:58.5856737Z         "unit": {
2026-06-20T11:21:58.5857019Z           "complete": true,
2026-06-20T11:21:58.5857282Z           "evidence": [
2026-06-20T11:21:58.5857525Z             {
2026-06-20T11:21:58.5857845Z               "path": "crates/spt/src/cli.rs",
2026-06-20T11:21:58.5858108Z               "line": 7355
2026-06-20T11:21:58.5858349Z             }
2026-06-20T11:21:58.5858588Z           ]
2026-06-20T11:21:58.5858832Z         }
2026-06-20T11:21:58.5859214Z       }
2026-06-20T11:21:58.5859453Z     },
2026-06-20T11:21:58.5859691Z     {
2026-06-20T11:21:58.5859996Z       "id": "REQ-ENDPOINT-STOP-OFFLINE",
2026-06-20T11:21:58.5863819Z       "title": "H3: `spt endpoint stop <id>` marks the endpoint OFFLINE (alive=false), not merely de-readied. cmd_stop (cli.rs:2994-3010) removes the ready marker + unregisters the address but does NOT set status offline, so a stopped daemon-hosted endpoint still reports alive=true (status=online latch). FIX: add set_status(perch, STATUS_OFFLINE) to cmd_stop — folds with B2 (same setter). Unit: stop → is_perch_alive=false / alive=false. (v0.12.0)",
2026-06-20T11:21:58.5864114Z       "requiredStages": [
2026-06-20T11:21:58.5864354Z         "impl",
2026-06-20T11:21:58.5864599Z         "unit"
2026-06-20T11:21:58.5864831Z       ],
2026-06-20T11:21:58.5865079Z       "stages": {
2026-06-20T11:21:58.5865322Z         "doc": {
2026-06-20T11:21:58.5865595Z           "complete": false,
2026-06-20T11:21:58.5865857Z           "evidence": []
2026-06-20T11:21:58.5866101Z         },
2026-06-20T11:21:58.5866353Z         "impl": {
2026-06-20T11:21:58.5866619Z           "complete": true,
2026-06-20T11:21:58.5866895Z           "evidence": [
2026-06-20T11:21:58.5867133Z             {
2026-06-20T11:21:58.5867451Z               "path": "crates/spt/src/cli.rs",
2026-06-20T11:21:58.5867709Z               "line": 3165
2026-06-20T11:21:58.5867942Z             }
2026-06-20T11:21:58.5868180Z           ]
2026-06-20T11:21:58.5868414Z         },
2026-06-20T11:21:58.5868677Z         "int": {
2026-06-20T11:21:58.5869026Z           "complete": false,
2026-06-20T11:21:58.5869278Z           "evidence": []
2026-06-20T11:21:58.5869514Z         },
2026-06-20T11:21:58.5869751Z         "unit": {
2026-06-20T11:21:58.5870028Z           "complete": true,
2026-06-20T11:21:58.5870285Z           "evidence": [
2026-06-20T11:21:58.5870527Z             {
2026-06-20T11:21:58.5870837Z               "path": "crates/spt/src/cli.rs",
2026-06-20T11:21:58.5871090Z               "line": 7331
2026-06-20T11:21:58.5871343Z             }
2026-06-20T11:21:58.5871587Z           ]
2026-06-20T11:21:58.5871825Z         }
2026-06-20T11:21:58.5872058Z       }
2026-06-20T11:21:58.5872301Z     },
2026-06-20T11:21:58.5872549Z     {
2026-06-20T11:21:58.5872801Z       "id": "REQ-EP-1",
2026-06-20T11:21:58.5873198Z       "title": "Day-one endpoint types; open type system",
2026-06-20T11:21:58.5873474Z       "requiredStages": [
2026-06-20T11:21:58.5873716Z         "impl",
2026-06-20T11:21:58.5873960Z         "unit"
2026-06-20T11:21:58.5874208Z       ],
2026-06-20T11:21:58.5874466Z       "stages": {
2026-06-20T11:21:58.5874693Z         "doc": {
2026-06-20T11:21:58.5874976Z           "complete": false,
2026-06-20T11:21:58.5875234Z           "evidence": []
2026-06-20T11:21:58.5875482Z         },
2026-06-20T11:21:58.5875736Z         "impl": {
2026-06-20T11:21:58.5876003Z           "complete": true,
2026-06-20T11:21:58.5876264Z           "evidence": [
2026-06-20T11:21:58.5876508Z             {
2026-06-20T11:21:58.5876879Z               "path": "crates/spt-proto/src/endpoint.rs",
2026-06-20T11:21:58.5877131Z               "line": 77
2026-06-20T11:21:58.5877367Z             },
2026-06-20T11:21:58.5877613Z             {
2026-06-20T11:21:58.5877978Z               "path": "crates/spt-proto/src/endpoint.rs",
2026-06-20T11:21:58.5878240Z               "line": 94
2026-06-20T11:21:58.5878482Z             }
2026-06-20T11:21:58.5878731Z           ]
2026-06-20T11:21:58.5879031Z         },
2026-06-20T11:21:58.5879280Z         "int": {
2026-06-20T11:21:58.5879655Z           "complete": false,
2026-06-20T11:21:58.5879919Z           "evidence": []
2026-06-20T11:21:58.5880160Z         },
2026-06-20T11:21:58.5880406Z         "unit": {
2026-06-20T11:21:58.5880673Z           "complete": true,
2026-06-20T11:21:58.5880931Z           "evidence": [
2026-06-20T11:21:58.5881184Z             {
2026-06-20T11:21:58.5881541Z               "path": "crates/spt-proto/src/endpoint.rs",
2026-06-20T11:21:58.5881809Z               "line": 161
2026-06-20T11:21:58.5882051Z             },
2026-06-20T11:21:58.5882299Z             {
2026-06-20T11:21:58.5882671Z               "path": "crates/spt-proto/src/endpoint.rs",
2026-06-20T11:21:58.5883032Z               "line": 178
2026-06-20T11:21:58.5883289Z             }
2026-06-20T11:21:58.5883528Z           ]
2026-06-20T11:21:58.5883776Z         }
2026-06-20T11:21:58.5884025Z       }
2026-06-20T11:21:58.5884257Z     },
2026-06-20T11:21:58.5884506Z     {
2026-06-20T11:21:58.5884763Z       "id": "REQ-EP-2",
2026-06-20T11:21:58.5885262Z       "title": "Agent endpoints vs Shells distinction in the type model",
2026-06-20T11:21:58.5885536Z       "requiredStages": [
2026-06-20T11:21:58.5885780Z         "impl",
2026-06-20T11:21:58.5886024Z         "unit"
2026-06-20T11:21:58.5886258Z       ],
2026-06-20T11:21:58.5886499Z       "stages": {
2026-06-20T11:21:58.5886743Z         "doc": {
2026-06-20T11:21:58.5887020Z           "complete": false,
2026-06-20T11:21:58.5887283Z           "evidence": []
2026-06-20T11:21:58.5887532Z         },
2026-06-20T11:21:58.5887783Z         "impl": {
2026-06-20T11:21:58.5888044Z           "complete": true,
2026-06-20T11:21:58.5888305Z           "evidence": [
2026-06-20T11:21:58.5888562Z             {
2026-06-20T11:21:58.5888919Z               "path": "crates/spt-proto/src/endpoint.rs",
2026-06-20T11:21:58.5889253Z               "line": 114
2026-06-20T11:21:58.5889502Z             },
2026-06-20T11:21:58.5889749Z             {
2026-06-20T11:21:58.5890112Z               "path": "crates/spt-proto/src/endpoint.rs",
2026-06-20T11:21:58.5890374Z               "line": 131
2026-06-20T11:21:58.5890620Z             },
2026-06-20T11:21:58.5890871Z             {
2026-06-20T11:21:58.5891228Z               "path": "crates/spt-proto/src/endpoint.rs",
2026-06-20T11:21:58.5891491Z               "line": 138
2026-06-20T11:21:58.5891740Z             }
2026-06-20T11:21:58.5891972Z           ]
2026-06-20T11:21:58.5892215Z         },
2026-06-20T11:21:58.5892463Z         "int": {
2026-06-20T11:21:58.5892745Z           "complete": false,
2026-06-20T11:21:58.5893008Z           "evidence": []
2026-06-20T11:21:58.5893251Z         },
2026-06-20T11:21:58.5893502Z         "unit": {
2026-06-20T11:21:58.5893769Z           "complete": true,
2026-06-20T11:21:58.5894031Z           "evidence": [
2026-06-20T11:21:58.5894271Z             {
2026-06-20T11:21:58.5894637Z               "path": "crates/spt-proto/src/endpoint.rs",
2026-06-20T11:21:58.5894900Z               "line": 190
2026-06-20T11:21:58.5895142Z             },
2026-06-20T11:21:58.5895385Z             {
2026-06-20T11:21:58.5895746Z               "path": "crates/spt-proto/src/endpoint.rs",
2026-06-20T11:21:58.5896016Z               "line": 208
2026-06-20T11:21:58.5896251Z             },
2026-06-20T11:21:58.5896493Z             {
2026-06-20T11:21:58.5896865Z               "path": "crates/spt-proto/src/endpoint.rs",
2026-06-20T11:21:58.5897123Z               "line": 221
2026-06-20T11:21:58.5897370Z             }
2026-06-20T11:21:58.5897609Z           ]
2026-06-20T11:21:58.5897852Z         }
2026-06-20T11:21:58.5898101Z       }
2026-06-20T11:21:58.5898333Z     },
2026-06-20T11:21:58.5898590Z     {
2026-06-20T11:21:58.5898846Z       "id": "REQ-EP-3",
2026-06-20T11:21:58.5899489Z       "title": "Messaging payloads carry typed operation commands + file blobs",
2026-06-20T11:21:58.5899761Z       "requiredStages": [
2026-06-20T11:21:58.5900004Z         "impl",
2026-06-20T11:21:58.5900251Z         "unit"
2026-06-20T11:21:58.5900494Z       ],
2026-06-20T11:21:58.5900748Z       "stages": {
2026-06-20T11:21:58.5901105Z         "doc": {
2026-06-20T11:21:58.5901404Z           "complete": false,
2026-06-20T11:21:58.5901665Z           "evidence": []
2026-06-20T11:21:58.5905392Z         },
2026-06-20T11:21:58.5905693Z         "impl": {
2026-06-20T11:21:58.5905978Z           "complete": true,
2026-06-20T11:21:58.5906240Z           "evidence": [
2026-06-20T11:21:58.5906492Z             {
2026-06-20T11:21:58.5906863Z               "path": "crates/spt-proto/src/payload.rs",
2026-06-20T11:21:58.5907130Z               "line": 31
2026-06-20T11:21:58.5907378Z             },
2026-06-20T11:21:58.5907624Z             {
2026-06-20T11:21:58.5907993Z               "path": "crates/spt-proto/src/payload.rs",
2026-06-20T11:21:58.5908394Z               "line": 49
2026-06-20T11:21:58.5908642Z             }
2026-06-20T11:21:58.5908884Z           ]
2026-06-20T11:21:58.5909207Z         },
2026-06-20T11:21:58.5909458Z         "int": {
2026-06-20T11:21:58.5909730Z           "complete": false,
2026-06-20T11:21:58.5909992Z           "evidence": []
2026-06-20T11:21:58.5910240Z         },
2026-06-20T11:21:58.5910492Z         "unit": {
2026-06-20T11:21:58.5910764Z           "complete": true,
2026-06-20T11:21:58.5911017Z           "evidence": [
2026-06-20T11:21:58.5911256Z             {
2026-06-20T11:21:58.5911609Z               "path": "crates/spt-proto/src/payload.rs",
2026-06-20T11:21:58.5911860Z               "line": 156
2026-06-20T11:21:58.5912100Z             },
2026-06-20T11:21:58.5912339Z             {
2026-06-20T11:21:58.5912706Z               "path": "crates/spt-proto/src/payload.rs",
2026-06-20T11:21:58.5912964Z               "line": 164
2026-06-20T11:21:58.5913212Z             },
2026-06-20T11:21:58.5913461Z             {
2026-06-20T11:21:58.5913828Z               "path": "crates/spt-proto/src/payload.rs",
2026-06-20T11:21:58.5914100Z               "line": 177
2026-06-20T11:21:58.5914342Z             },
2026-06-20T11:21:58.5914588Z             {
2026-06-20T11:21:58.5914946Z               "path": "crates/spt-proto/src/payload.rs",
2026-06-20T11:21:58.5915218Z               "line": 200
2026-06-20T11:21:58.5915466Z             },
2026-06-20T11:21:58.5915705Z             {
2026-06-20T11:21:58.5916077Z               "path": "crates/spt-proto/src/payload.rs",
2026-06-20T11:21:58.5916321Z               "line": 216
2026-06-20T11:21:58.5916572Z             },
2026-06-20T11:21:58.5916810Z             {
2026-06-20T11:21:58.5917179Z               "path": "crates/spt-proto/src/payload.rs",
2026-06-20T11:21:58.5917428Z               "line": 233
2026-06-20T11:21:58.5917676Z             }
2026-06-20T11:21:58.5917923Z           ]
2026-06-20T11:21:58.5918156Z         }
2026-06-20T11:21:58.5918396Z       }
2026-06-20T11:21:58.5918643Z     },
2026-06-20T11:21:58.5918882Z     {
2026-06-20T11:21:58.5919221Z       "id": "REQ-EP-4",
2026-06-20T11:21:58.5919663Z       "title": "PresenceChannel broker endpoint (seam day-one)",
2026-06-20T11:21:58.5919943Z       "requiredStages": [
2026-06-20T11:21:58.5920185Z         "impl",
2026-06-20T11:21:58.5920442Z         "unit"
2026-06-20T11:21:58.5920680Z       ],
2026-06-20T11:21:58.5920943Z       "stages": {
2026-06-20T11:21:58.5921196Z         "doc": {
2026-06-20T11:21:58.5921473Z           "complete": false,
2026-06-20T11:21:58.5921740Z           "evidence": []
2026-06-20T11:21:58.5921983Z         },
2026-06-20T11:21:58.5922235Z         "impl": {
2026-06-20T11:21:58.5922500Z           "complete": true,
2026-06-20T11:21:58.5922761Z           "evidence": [
2026-06-20T11:21:58.5923004Z             {
2026-06-20T11:21:58.5923347Z               "path": "crates/spt-daemon/src/brain.rs",
2026-06-20T11:21:58.5923614Z               "line": 745
2026-06-20T11:21:58.5923858Z             },
2026-06-20T11:21:58.5924116Z             {
2026-06-20T11:21:58.5924463Z               "path": "crates/spt-daemon/src/brain.rs",
2026-06-20T11:21:58.5924726Z               "line": 1106
2026-06-20T11:21:58.5924960Z             },
2026-06-20T11:21:58.5925206Z             {
2026-06-20T11:21:58.5925563Z               "path": "crates/spt-daemon/src/broker.rs",
2026-06-20T11:21:58.5925965Z               "line": 2079
2026-06-20T11:21:58.5926207Z             },
2026-06-20T11:21:58.5926455Z             {
2026-06-20T11:21:58.5926803Z               "path": "crates/spt-daemon/src/msg.rs",
2026-06-20T11:21:58.5927060Z               "line": 118
2026-06-20T11:21:58.5927310Z             },
2026-06-20T11:21:58.5927546Z             {
2026-06-20T11:21:58.5927878Z               "path": "crates/spt-daemon/src/msg.rs",
2026-06-20T11:21:58.5928149Z               "line": 699
2026-06-20T11:21:58.5928392Z             },
2026-06-20T11:21:58.5928627Z             {
2026-06-20T11:21:58.5929045Z               "path": "crates/spt-daemon/src/msg.rs",
2026-06-20T11:21:58.5929413Z               "line": 836
2026-06-20T11:21:58.5929661Z             },
2026-06-20T11:21:58.5929903Z             {
2026-06-20T11:21:58.5930266Z               "path": "crates/spt-daemon/src/nethost.rs",
2026-06-20T11:21:58.5930526Z               "line": 271
2026-06-20T11:21:58.5930779Z             },
2026-06-20T11:21:58.5931031Z             {
2026-06-20T11:21:58.5931385Z               "path": "crates/spt-daemon/src/nethost.rs",
2026-06-20T11:21:58.5931656Z               "line": 458
2026-06-20T11:21:58.5931899Z             },
2026-06-20T11:21:58.5932137Z             {
2026-06-20T11:21:58.5932490Z               "path": "crates/spt-daemon/src/nethost.rs",
2026-06-20T11:21:58.5932748Z               "line": 1246
2026-06-20T11:21:58.5932995Z             }
2026-06-20T11:21:58.5933244Z           ]
2026-06-20T11:21:58.5933493Z         },
2026-06-20T11:21:58.5933731Z         "int": {
2026-06-20T11:21:58.5934003Z           "complete": false,
2026-06-20T11:21:58.5934271Z           "evidence": []
2026-06-20T11:21:58.5934527Z         },
2026-06-20T11:21:58.5934771Z         "unit": {
2026-06-20T11:21:58.5935042Z           "complete": true,
2026-06-20T11:21:58.5935310Z           "evidence": [
2026-06-20T11:21:58.5935549Z             {
2026-06-20T11:21:58.5935890Z               "path": "crates/spt-daemon/src/msg.rs",
2026-06-20T11:21:58.5936157Z               "line": 927
2026-06-20T11:21:58.5936404Z             },
2026-06-20T11:21:58.5936644Z             {
2026-06-20T11:21:58.5937025Z               "path": "crates/spt-daemon/tests/presence.rs",
2026-06-20T11:21:58.5937287Z               "line": 76
2026-06-20T11:21:58.5937522Z             },
2026-06-20T11:21:58.5937775Z             {
2026-06-20T11:21:58.5938149Z               "path": "crates/spt-daemon/tests/presence.rs",
2026-06-20T11:21:58.5938419Z               "line": 147
2026-06-20T11:21:58.5938662Z             }
2026-06-20T11:21:58.5938910Z           ]
2026-06-20T11:21:58.5939211Z         }
2026-06-20T11:21:58.5939449Z       }
2026-06-20T11:21:58.5939693Z     },
2026-06-20T11:21:58.5939930Z     {
2026-06-20T11:21:58.5940197Z       "id": "REQ-EP-5",
2026-06-20T11:21:58.5942283Z       "title": "Concrete shell instantiation model: spawn-mints-instance (vs relink/online), registered-on-node permission + broadcast-is-discovery, per-shell require_approval gate, max_instances_per_owner + over_cap, instance aliasing, discovery scope",
2026-06-20T11:21:58.5942564Z       "requiredStages": [
2026-06-20T11:21:58.5942817Z         "impl",
2026-06-20T11:21:58.5943054Z         "unit",
2026-06-20T11:21:58.5943303Z         "int"
2026-06-20T11:21:58.5943535Z       ],
2026-06-20T11:21:58.5943785Z       "stages": {
2026-06-20T11:21:58.5944043Z         "doc": {
2026-06-20T11:21:58.5944306Z           "complete": false,
2026-06-20T11:21:58.5944573Z           "evidence": []
2026-06-20T11:21:58.5944812Z         },
2026-06-20T11:21:58.5945059Z         "impl": {
2026-06-20T11:21:58.5945326Z           "complete": true,
2026-06-20T11:21:58.5945588Z           "evidence": [
2026-06-20T11:21:58.5945837Z             {
2026-06-20T11:21:58.5946227Z               "path": "crates/spt-daemon/src/registryhost.rs",
2026-06-20T11:21:58.5946499Z               "line": 367
2026-06-20T11:21:58.5946742Z             },
2026-06-20T11:21:58.5946979Z             {
2026-06-20T11:21:58.5947342Z               "path": "crates/spt-daemon/src/shelldisc.rs",
2026-06-20T11:21:58.5947706Z               "line": 18
2026-06-20T11:21:58.5947957Z             },
2026-06-20T11:21:58.5948200Z             {
2026-06-20T11:21:58.5948576Z               "path": "crates/spt-daemon/src/shelldisc.rs",
2026-06-20T11:21:58.5948826Z               "line": 63
2026-06-20T11:21:58.5949174Z             },
2026-06-20T11:21:58.5949423Z             {
2026-06-20T11:21:58.5949794Z               "path": "crates/spt-daemon/src/shelldisc.rs",
2026-06-20T11:21:58.5950061Z               "line": 92
2026-06-20T11:21:58.5950300Z             },
2026-06-20T11:21:58.5950548Z             {
2026-06-20T11:21:58.5950902Z               "path": "crates/spt-daemon/src/shelldisc.rs",
2026-06-20T11:21:58.5951274Z               "line": 167
2026-06-20T11:21:58.5951519Z             },
2026-06-20T11:21:58.5951760Z             {
2026-06-20T11:21:58.5952136Z               "path": "crates/spt-daemon/src/shelldisc.rs",
2026-06-20T11:21:58.5952384Z               "line": 179
2026-06-20T11:21:58.5952685Z             },
2026-06-20T11:21:58.5952919Z             {
2026-06-20T11:21:58.5953305Z               "path": "crates/spt-net/src/net/registry.rs",
2026-06-20T11:21:58.5953562Z               "line": 114
2026-06-20T11:21:58.5953868Z             },
2026-06-20T11:21:58.5954265Z             {
2026-06-20T11:21:58.5954656Z               "path": "crates/spt-store/src/shellinfo.rs",
2026-06-20T11:21:58.5954975Z               "line": 22
2026-06-20T11:21:58.5955219Z             },
2026-06-20T11:21:58.5955462Z             {
2026-06-20T11:21:58.5955810Z               "path": "crates/spt-store/src/shellinfo.rs",
2026-06-20T11:21:58.5956073Z               "line": 145
2026-06-20T11:21:58.5956335Z             },
2026-06-20T11:21:58.5956573Z             {
2026-06-20T11:21:58.5956939Z               "path": "crates/spt-store/src/shellinfo.rs",
2026-06-20T11:21:58.5957201Z               "line": 174
2026-06-20T11:21:58.5957449Z             },
2026-06-20T11:21:58.5957688Z             {
2026-06-20T11:21:58.5958041Z               "path": "crates/spt-store/src/shellinfo.rs",
2026-06-20T11:21:58.5958299Z               "line": 196
2026-06-20T11:21:58.5958542Z             },
2026-06-20T11:21:58.5958784Z             {
2026-06-20T11:21:58.5959217Z               "path": "crates/spt-store/src/shellinfo.rs",
2026-06-20T11:21:58.5959491Z               "line": 221
2026-06-20T11:21:58.5959744Z             },
2026-06-20T11:21:58.5959983Z             {
2026-06-20T11:21:58.5960349Z               "path": "crates/spt-store/src/shellinfo.rs",
2026-06-20T11:21:58.5960603Z               "line": 247
2026-06-20T11:21:58.5960851Z             },
2026-06-20T11:21:58.5961089Z             {
2026-06-20T11:21:58.5961443Z               "path": "crates/spt-store/src/shellinfo.rs",
2026-06-20T11:21:58.5961709Z               "line": 270
2026-06-20T11:21:58.5961951Z             },
2026-06-20T11:21:58.5962216Z             {
2026-06-20T11:21:58.5962569Z               "path": "crates/spt/src/api/reporting.rs",
2026-06-20T11:21:58.5962831Z               "line": 104
2026-06-20T11:21:58.5963079Z             },
2026-06-20T11:21:58.5963322Z             {
2026-06-20T11:21:58.5963632Z               "path": "crates/spt/src/cli.rs",
2026-06-20T11:21:58.5963889Z               "line": 6068
2026-06-20T11:21:58.5964137Z             },
2026-06-20T11:21:58.5964377Z             {
2026-06-20T11:21:58.5964689Z               "path": "crates/spt/src/cli.rs",
2026-06-20T11:21:58.5964944Z               "line": 6202
2026-06-20T11:21:58.5965221Z             },
2026-06-20T11:21:58.5965464Z             {
2026-06-20T11:21:58.5965774Z               "path": "crates/spt/src/cli.rs",
2026-06-20T11:21:58.5966074Z               "line": 6368
2026-06-20T11:21:58.5966342Z             },
2026-06-20T11:21:58.5966586Z             {
2026-06-20T11:21:58.5966895Z               "path": "crates/spt/src/cli.rs",
2026-06-20T11:21:58.5967162Z               "line": 6896
2026-06-20T11:21:58.5967409Z             }
2026-06-20T11:21:58.5967643Z           ]
2026-06-20T11:21:58.5967896Z         },
2026-06-20T11:21:58.5968257Z         "int": {
2026-06-20T11:21:58.5968521Z           "complete": true,
2026-06-20T11:21:58.5968787Z           "evidence": [
2026-06-20T11:21:58.5969097Z             {
2026-06-20T11:21:58.5969484Z               "path": "crates/spt/tests/notify_shell_e2e.rs",
2026-06-20T11:21:58.5969772Z               "line": 16
2026-06-20T11:21:58.5970017Z             },
2026-06-20T11:21:58.5970252Z             {
2026-06-20T11:21:58.5970590Z               "path": "crates/spt/tests/shell_e2e.rs",
2026-06-20T11:21:58.5970848Z               "line": 15
2026-06-20T11:21:58.5971087Z             }
2026-06-20T11:21:58.5971329Z           ]
2026-06-20T11:21:58.5971573Z         },
2026-06-20T11:21:58.5971925Z         "unit": {
2026-06-20T11:21:58.5972197Z           "complete": true,
2026-06-20T11:21:58.5972459Z           "evidence": [
2026-06-20T11:21:58.5972696Z             {
2026-06-20T11:21:58.5973096Z               "path": "crates/spt-daemon/src/shelldisc.rs",
2026-06-20T11:21:58.5973358Z               "line": 246
2026-06-20T11:21:58.5973634Z             },
2026-06-20T11:21:58.5973867Z             {
2026-06-20T11:21:58.5974230Z               "path": "crates/spt-daemon/src/shelldisc.rs",
2026-06-20T11:21:58.5974492Z               "line": 306
2026-06-20T11:21:58.5974730Z             },
2026-06-20T11:21:58.5974970Z             {
2026-06-20T11:21:58.5975339Z               "path": "crates/spt-daemon/src/shelldisc.rs",
2026-06-20T11:21:58.5975605Z               "line": 363
2026-06-20T11:21:58.5975853Z             },
2026-06-20T11:21:58.5976090Z             {
2026-06-20T11:21:58.5976453Z               "path": "crates/spt-store/src/shellinfo.rs",
2026-06-20T11:21:58.5976720Z               "line": 286
2026-06-20T11:21:58.5976964Z             },
2026-06-20T11:21:58.5977222Z             {
2026-06-20T11:21:58.5977583Z               "path": "crates/spt-store/src/shellinfo.rs",
2026-06-20T11:21:58.5977847Z               "line": 338
2026-06-20T11:21:58.5978092Z             },
2026-06-20T11:21:58.5978331Z             {
2026-06-20T11:21:58.5978693Z               "path": "crates/spt/src/api/reporting.rs",
2026-06-20T11:21:58.5979023Z               "line": 783
2026-06-20T11:21:58.5979270Z             },
2026-06-20T11:21:58.5979513Z             {
2026-06-20T11:21:58.5979823Z               "path": "crates/spt/src/cli.rs",
2026-06-20T11:21:58.5980082Z               "line": 8751
2026-06-20T11:21:58.5980332Z             },
2026-06-20T11:21:58.5980568Z             {
2026-06-20T11:21:58.5980874Z               "path": "crates/spt/src/cli.rs",
2026-06-20T11:21:58.5981131Z               "line": 8904
2026-06-20T11:21:58.5981366Z             },
2026-06-20T11:21:58.5981604Z             {
2026-06-20T11:21:58.5981909Z               "path": "crates/spt/src/cli.rs",
2026-06-20T11:21:58.5982185Z               "line": 9493
2026-06-20T11:21:58.5982428Z             },
2026-06-20T11:21:58.5982676Z             {
2026-06-20T11:21:58.5982991Z               "path": "crates/spt/src/cli.rs",
2026-06-20T11:21:58.5983243Z               "line": 9609
2026-06-20T11:21:58.5983493Z             }
2026-06-20T11:21:58.5983745Z           ]
2026-06-20T11:21:58.5983994Z         }
2026-06-20T11:21:58.5984233Z       }
2026-06-20T11:21:58.5984466Z     },
2026-06-20T11:21:58.5984704Z     {
2026-06-20T11:21:58.5984961Z       "id": "REQ-EP-6",
2026-06-20T11:21:58.5989278Z       "title": "Gateway type acceptance: a Gateway-typed perch binds (api bind --type, open type system — un-hardcode the live_agent default), advertises/addressable like any endpoint, owns shells (owner validation not agent-family-gated), subscribes to digests, and is the user-msg identity gate's user-backed origin (REQ-MSG-5); in-tree mock-gateway fixture (R-DOCS-2 pattern, no downstream adapter code). Cross-node WAN Gateway-origin (registry endpoint_type trust) tracked by REQ-MSG-6",
2026-06-20T11:21:58.5989587Z       "requiredStages": [
2026-06-20T11:21:58.5989820Z         "doc",
2026-06-20T11:21:58.5990069Z         "impl",
2026-06-20T11:21:58.5990313Z         "unit"
2026-06-20T11:21:58.5990551Z       ],
2026-06-20T11:21:58.5990931Z       "stages": {
2026-06-20T11:21:58.5991186Z         "doc": {
2026-06-20T11:21:58.5991467Z           "complete": true,
2026-06-20T11:21:58.5991724Z           "evidence": [
2026-06-20T11:21:58.5991964Z             {
2026-06-20T11:21:58.5992249Z               "path": "CONTEXT.md",
2026-06-20T11:21:58.5992508Z               "line": 227
2026-06-20T11:21:58.5992745Z             }
2026-06-20T11:21:58.5992993Z           ]
2026-06-20T11:21:58.5993232Z         },
2026-06-20T11:21:58.5993467Z         "impl": {
2026-06-20T11:21:58.5993745Z           "complete": true,
2026-06-20T11:21:58.5994014Z           "evidence": [
2026-06-20T11:21:58.5994273Z             {
2026-06-20T11:21:58.5994721Z               "path": "crates/spt/src/api/startup.rs",
2026-06-20T11:21:58.5994987Z               "line": 212
2026-06-20T11:21:58.5995231Z             }
2026-06-20T11:21:58.5995474Z           ]
2026-06-20T11:21:58.5995723Z         },
2026-06-20T11:21:58.5995971Z         "int": {
2026-06-20T11:21:58.5996245Z           "complete": true,
2026-06-20T11:21:58.5996506Z           "evidence": [
2026-06-20T11:21:58.5996749Z             {
2026-06-20T11:21:58.5997112Z               "path": "crates/spt/tests/gateway_e2e.rs",
2026-06-20T11:21:58.5997369Z               "line": 18
2026-06-20T11:21:58.5997603Z             }
2026-06-20T11:21:58.5997893Z           ]
2026-06-20T11:21:58.5998141Z         },
2026-06-20T11:21:58.5998389Z         "unit": {
2026-06-20T11:21:58.5998661Z           "complete": true,
2026-06-20T11:21:58.5998919Z           "evidence": [
2026-06-20T11:21:58.5999223Z             {
2026-06-20T11:21:58.5999600Z               "path": "crates/spt-daemon/src/shellhost.rs",
2026-06-20T11:21:58.5999872Z               "line": 556
2026-06-20T11:21:58.6000128Z             },
2026-06-20T11:21:58.6000367Z             {
2026-06-20T11:21:58.6000714Z               "path": "crates/spt/src/api/startup.rs",
2026-06-20T11:21:58.6000991Z               "line": 904
2026-06-20T11:21:58.6001226Z             }
2026-06-20T11:21:58.6001462Z           ]
2026-06-20T11:21:58.6001703Z         }
2026-06-20T11:21:58.6001946Z       }
2026-06-20T11:21:58.6002190Z     },
2026-06-20T11:21:58.6002439Z     {
2026-06-20T11:21:58.6002710Z       "id": "REQ-EP-7",
2026-06-20T11:21:58.6007432Z       "title": "Durable live-role.md: a per-agent broad-purpose statement in tracked/agents/<id>/ beside live-context.md (replicates with the mind on the same a-<id> branch); renders FIRST at start-transition context injection (role -> live-context -> project-context); SOLE writer `spt endpoint role --overwrite <file>` — mechanical no-automated-writer guarantee (echo-commune ingest / signoff / Psyche reconcile structurally exclude it). The user-backed-origin hard gate on the writer is a deferred later tightening (rides the user-msg identity plumbing)",
2026-06-20T11:21:58.6007723Z       "requiredStages": [
2026-06-20T11:21:58.6007972Z         "doc",
2026-06-20T11:21:58.6008230Z         "impl",
2026-06-20T11:21:58.6008472Z         "unit"
2026-06-20T11:21:58.6008720Z       ],
2026-06-20T11:21:58.6009063Z       "stages": {
2026-06-20T11:21:58.6009311Z         "doc": {
2026-06-20T11:21:58.6009588Z           "complete": true,
2026-06-20T11:21:58.6009855Z           "evidence": [
2026-06-20T11:21:58.6010088Z             {
2026-06-20T11:21:58.6010369Z               "path": "CONTEXT.md",
2026-06-20T11:21:58.6010621Z               "line": 490
2026-06-20T11:21:58.6010865Z             }
2026-06-20T11:21:58.6011100Z           ]
2026-06-20T11:21:58.6011347Z         },
2026-06-20T11:21:58.6011599Z         "impl": {
2026-06-20T11:21:58.6011856Z           "complete": true,
2026-06-20T11:21:58.6012122Z           "evidence": [
2026-06-20T11:21:58.6012364Z             {
2026-06-20T11:21:58.6012726Z               "path": "crates/spt-daemon/src/sync.rs",
2026-06-20T11:21:58.6012989Z               "line": 505
2026-06-20T11:21:58.6013236Z             },
2026-06-20T11:21:58.6013484Z             {
2026-06-20T11:21:58.6013822Z               "path": "crates/spt-live/src/resume.rs",
2026-06-20T11:21:58.6014094Z               "line": 87
2026-06-20T11:21:58.6014457Z             },
2026-06-20T11:21:58.6014704Z             {
2026-06-20T11:21:58.6015083Z               "path": "crates/spt-store/src/contextstore.rs",
2026-06-20T11:21:58.6015350Z               "line": 81
2026-06-20T11:21:58.6015594Z             },
2026-06-20T11:21:58.6015841Z             {
2026-06-20T11:21:58.6016228Z               "path": "crates/spt-store/src/contextstore.rs",
2026-06-20T11:21:58.6016490Z               "line": 166
2026-06-20T11:21:58.6016733Z             },
2026-06-20T11:21:58.6016971Z             {
2026-06-20T11:21:58.6017290Z               "path": "crates/spt/src/cli.rs",
2026-06-20T11:21:58.6017541Z               "line": 1645
2026-06-20T11:21:58.6017889Z             }
2026-06-20T11:21:58.6018132Z           ]
2026-06-20T11:21:58.6018379Z         },
2026-06-20T11:21:58.6018612Z         "int": {
2026-06-20T11:21:58.6018875Z           "complete": false,
2026-06-20T11:21:58.6019238Z           "evidence": []
2026-06-20T11:21:58.6019480Z         },
2026-06-20T11:21:58.6019725Z         "unit": {
2026-06-20T11:21:58.6019987Z           "complete": true,
2026-06-20T11:21:58.6020251Z           "evidence": [
2026-06-20T11:21:58.6020500Z             {
2026-06-20T11:21:58.6020834Z               "path": "crates/spt-daemon/src/sync.rs",
2026-06-20T11:21:58.6021101Z               "line": 623
2026-06-20T11:21:58.6021345Z             },
2026-06-20T11:21:58.6021587Z             {
2026-06-20T11:21:58.6021937Z               "path": "crates/spt-live/src/ingest.rs",
2026-06-20T11:21:58.6022203Z               "line": 212
2026-06-20T11:21:58.6022435Z             },
2026-06-20T11:21:58.6022677Z             {
2026-06-20T11:21:58.6023020Z               "path": "crates/spt-live/src/resume.rs",
2026-06-20T11:21:58.6023292Z               "line": 307
2026-06-20T11:21:58.6023539Z             },
2026-06-20T11:21:58.6023781Z             {
2026-06-20T11:21:58.6024096Z               "path": "crates/spt/src/cli.rs",
2026-06-20T11:21:58.6024364Z               "line": 7724
2026-06-20T11:21:58.6024612Z             },
2026-06-20T11:21:58.6024856Z             {
2026-06-20T11:21:58.6025161Z               "path": "crates/spt/src/cli.rs",
2026-06-20T11:21:58.6025416Z               "line": 7751
2026-06-20T11:21:58.6025648Z             }
2026-06-20T11:21:58.6025892Z           ]
2026-06-20T11:21:58.6026130Z         }
2026-06-20T11:21:58.6026372Z       }
2026-06-20T11:21:58.6026620Z     },
2026-06-20T11:21:58.6026868Z     {
2026-06-20T11:21:58.6027141Z       "id": "REQ-FRONT-1",
2026-06-20T11:21:58.6027671Z       "title": "Day-one launcher/manager frontend (list/launch/attach/init)",
2026-06-20T11:21:58.6027954Z       "requiredStages": [],
2026-06-20T11:21:58.6028200Z       "stages": {
2026-06-20T11:21:58.6028449Z         "doc": {
2026-06-20T11:21:58.6028730Z           "complete": false,
2026-06-20T11:21:58.6029059Z           "evidence": []
2026-06-20T11:21:58.6029303Z         },
2026-06-20T11:21:58.6029549Z         "impl": {
2026-06-20T11:21:58.6029821Z           "complete": false,
2026-06-20T11:21:58.6030093Z           "evidence": []
2026-06-20T11:21:58.6030327Z         },
2026-06-20T11:21:58.6030576Z         "int": {
2026-06-20T11:21:58.6030845Z           "complete": false,
2026-06-20T11:21:58.6031117Z           "evidence": []
2026-06-20T11:21:58.6031361Z         },
2026-06-20T11:21:58.6031600Z         "unit": {
2026-06-20T11:21:58.6031877Z           "complete": false,
2026-06-20T11:21:58.6032133Z           "evidence": []
2026-06-20T11:21:58.6032381Z         }
2026-06-20T11:21:58.6032629Z       }
2026-06-20T11:21:58.6032864Z     },
2026-06-20T11:21:58.6033095Z     {
2026-06-20T11:21:58.6033426Z       "id": "REQ-HAZARD-ATTACH-WEDGE",
2026-06-20T11:21:58.6048275Z       "title": "A legitimately dead PTY child (real crash/kill) + an undrained operator pump must NOT wedge the broker for all other clients. ROOT (v0.12.0 real-harness defect): loopback attach output is a blocking write_all into a bounded 64KB tokio duplex (nethost.rs:1040,1090); when the operator's rc pump stops draining (tab closed) the buffer fills and write_all blocks forever (the 'loopback never hangs' assumption at nethost.rs:1103 is false), parking a worker in the 2-worker net runtime (nethost.rs:640); a couple of these saturate BOTH workers → every new attach / `endpoint run` stalls right after 'PUMP_IPC_READER: spawned' → 30s FIRST_EVENT_GRACE → 'no output / dead or wedged'; `daemon stop` cannot join the stuck workers. DISTINCT from the removed B1 path-(c) mutex deadlock. DISPOSITION = PROVE-DON'T-CHANGE (doyle GATE-PASS @e883f45, 2026-06-18): this ROOT is the SUPERSEDED v0.12.0 hypothesis — the post-L0 code ALREADY prevents the wedge, so NO fail-fast / worker-count code was added. serve_attach forwards fire-and-forget (net_stream_send op_id=None) and the broker-side send_stream is already BROKER-QUIC-DEADLINE-bounded (bounded_block_on, 10s); the loopback duplex is drained broker-INTERNALLY by the operator row's own read pump (RecvHalf::Loopback, retentive_cap==0 → evict-not-park) so a dead rc (a dropped IPC subscriber) never backs peer_w up; bounded_block_on parks the BROKER DISPATCH thread, not a net worker → no worker-pool exhaustion (full mechanism in the required_stages comment). Folds the status=online sub-check: a dead spt-hosted endpoint is marked OFFLINE within one reconcile tick on abrupt child death (broker exit-waiter reaps the session → B2 sees it absent) — PROVEN, no change. (v0.12.1)",
2026-06-20T11:21:58.6048829Z       "requiredStages": [
2026-06-20T11:21:58.6049160Z         "int"
2026-06-20T11:21:58.6049401Z       ],
2026-06-20T11:21:58.6049654Z       "stages": {
2026-06-20T11:21:58.6049898Z         "doc": {
2026-06-20T11:21:58.6050179Z           "complete": false,
2026-06-20T11:21:58.6050442Z           "evidence": []
2026-06-20T11:21:58.6050708Z         },
2026-06-20T11:21:58.6050960Z         "impl": {
2026-06-20T11:21:58.6051228Z           "complete": false,
2026-06-20T11:21:58.6051490Z           "evidence": []
2026-06-20T11:21:58.6051725Z         },
2026-06-20T11:21:58.6051975Z         "int": {
2026-06-20T11:21:58.6052242Z           "complete": true,
2026-06-20T11:21:58.6052533Z           "evidence": [
2026-06-20T11:21:58.6052772Z             {
2026-06-20T11:21:58.6053158Z               "path": "crates/spt/tests/attach_wedge_e2e.rs",
2026-06-20T11:21:58.6053415Z               "line": 300
2026-06-20T11:21:58.6053660Z             }
2026-06-20T11:21:58.6053902Z           ]
2026-06-20T11:21:58.6054144Z         },
2026-06-20T11:21:58.6054390Z         "unit": {
2026-06-20T11:21:58.6054662Z           "complete": false,
2026-06-20T11:21:58.6054929Z           "evidence": []
2026-06-20T11:21:58.6055166Z         }
2026-06-20T11:21:58.6055410Z       }
2026-06-20T11:21:58.6055654Z     },
2026-06-20T11:21:58.6055902Z     {
2026-06-20T11:21:58.6056203Z       "id": "REQ-HAZARD-BIND-CWD-UNSET",
2026-06-20T11:21:58.6063523Z       "title": "A bound endpoint's `info.cwd` is SET at bind so a freshly-created perch appears under its own project tab. ROOT (found, v0.13.0): `info.cwd` is NEVER set on bind — `cmd_bind` (spt-hosted) and `bind_from_seed` (harness-hosted) never thread cwd into `establish_perch`/`rec.cwd`. FIX: `cmd_bind` reads its own `current_dir` (the broker spawned it in `project_cwd`); `bind_from_seed` passes `seed.cwd` (already captured at seed time, currently DISCARDED). DISTINCT from REQ-PICKER-HISTORY-FRESH (v0.12.1) — that unioned cwd-origin into picker MEMBERSHIP but tested merge_origin_project with a PROVIDED origin; it never asserted `info.cwd` is actually set on bind, so a real `endpoint run` perch still had an empty cwd and the union had nothing to union. This is the v0.12.1 P1 'appears under its own project right away' claim that was REFUTED in the changelog — delivered for real here. (v0.13.0)",
2026-06-20T11:21:58.6063843Z       "requiredStages": [
2026-06-20T11:21:58.6064095Z         "impl",
2026-06-20T11:21:58.6064342Z         "unit",
2026-06-20T11:21:58.6064586Z         "int"
2026-06-20T11:21:58.6064828Z       ],
2026-06-20T11:21:58.6065073Z       "stages": {
2026-06-20T11:21:58.6065322Z         "doc": {
2026-06-20T11:21:58.6065721Z           "complete": false,
2026-06-20T11:21:58.6065989Z           "evidence": []
2026-06-20T11:21:58.6066223Z         },
2026-06-20T11:21:58.6066481Z         "impl": {
2026-06-20T11:21:58.6066753Z           "complete": true,
2026-06-20T11:21:58.6067005Z           "evidence": [
2026-06-20T11:21:58.6067243Z             {
2026-06-20T11:21:58.6067585Z               "path": "crates/spt/src/api/startup.rs",
2026-06-20T11:21:58.6067855Z               "line": 257
2026-06-20T11:21:58.6068099Z             }
2026-06-20T11:21:58.6068337Z           ]
2026-06-20T11:21:58.6068570Z         },
2026-06-20T11:21:58.6068809Z         "int": {
2026-06-20T11:21:58.6069166Z           "complete": true,
2026-06-20T11:21:58.6069528Z           "evidence": [
2026-06-20T11:21:58.6069781Z             {
2026-06-20T11:21:58.6070166Z               "path": "crates/spt/tests/bind_cwd_project_e2e.rs",
2026-06-20T11:21:58.6070441Z               "line": 93
2026-06-20T11:21:58.6070690Z             }
2026-06-20T11:21:58.6070928Z           ]
2026-06-20T11:21:58.6071180Z         },
2026-06-20T11:21:58.6071427Z         "unit": {
2026-06-20T11:21:58.6071710Z           "complete": true,
2026-06-20T11:21:58.6071972Z           "evidence": [
2026-06-20T11:21:58.6072215Z             {
2026-06-20T11:21:58.6072559Z               "path": "crates/spt/src/api/startup.rs",
2026-06-20T11:21:58.6072822Z               "line": 802
2026-06-20T11:21:58.6073072Z             },
2026-06-20T11:21:58.6073306Z             {
2026-06-20T11:21:58.6073648Z               "path": "crates/spt/src/api/startup.rs",
2026-06-20T11:21:58.6073902Z               "line": 824
2026-06-20T11:21:58.6074155Z             },
2026-06-20T11:21:58.6074403Z             {
2026-06-20T11:21:58.6074746Z               "path": "crates/spt/src/api/startup.rs",
2026-06-20T11:21:58.6075027Z               "line": 855
2026-06-20T11:21:58.6075260Z             }
2026-06-20T11:21:58.6075510Z           ]
2026-06-20T11:21:58.6075744Z         }
2026-06-20T11:21:58.6075991Z       }
2026-06-20T11:21:58.6076229Z     },
2026-06-20T11:21:58.6076459Z     {
2026-06-20T11:21:58.6076793Z       "id": "REQ-HAZARD-BRAIN-RESPAWN-PATH",
2026-06-20T11:21:58.6083833Z       "title": "The broker respawns the brain onto the APPLIED bytes, not the renamed old binary: the candidate-binary default is the canonical exe path captured ONCE at broker start, never a per-spawn std::env::current_exe() — on Linux current_exe (readlink /proc/self/exe) is inode-tracking and follows the `apply` rename (spt -> spt.old-N), so a resident broker would respawn the brain onto OLD bytes while recording `applied` (Windows GetModuleFileName is path-at-start, so Windows was green; ADR-0018 Q3 silently assumed path-string semantics). Backstop: promotion gates on bytes — a trial promotes only if brain.ready exe_hash == the staged artifact hash for this platform, else auto-rollback + loud notif (readiness != new-bytes was the false-success that recorded applied:8 over a v0.4.0 brain on kitsubito, 2026-06-11). KNOWN-HAZARDS 6.11.",
2026-06-20T11:21:58.6084138Z       "requiredStages": [
2026-06-20T11:21:58.6084410Z         "doc",
2026-06-20T11:21:58.6084663Z         "impl",
2026-06-20T11:21:58.6084905Z         "unit",
2026-06-20T11:21:58.6085154Z         "int"
2026-06-20T11:21:58.6085397Z       ],
2026-06-20T11:21:58.6085650Z       "stages": {
2026-06-20T11:21:58.6085895Z         "doc": {
2026-06-20T11:21:58.6086175Z           "complete": true,
2026-06-20T11:21:58.6086442Z           "evidence": [
2026-06-20T11:21:58.6086680Z             {
2026-06-20T11:21:58.6087005Z               "path": "docs/KNOWN-HAZARDS.md",
2026-06-20T11:21:58.6087263Z               "line": 333
2026-06-20T11:21:58.6087500Z             }
2026-06-20T11:21:58.6087777Z           ]
2026-06-20T11:21:58.6088020Z         },
2026-06-20T11:21:58.6088264Z         "impl": {
2026-06-20T11:21:58.6088527Z           "complete": true,
2026-06-20T11:21:58.6088782Z           "evidence": [
2026-06-20T11:21:58.6089089Z             {
2026-06-20T11:21:58.6089472Z               "path": "crates/spt-daemon/src/brainproc.rs",
2026-06-20T11:21:58.6089843Z               "line": 494
2026-06-20T11:21:58.6090096Z             },
2026-06-20T11:21:58.6090344Z             {
2026-06-20T11:21:58.6090726Z               "path": "crates/spt-daemon/src/brainproc.rs",
2026-06-20T11:21:58.6090992Z               "line": 499
2026-06-20T11:21:58.6091230Z             },
2026-06-20T11:21:58.6091472Z             {
2026-06-20T11:21:58.6091838Z               "path": "crates/spt-daemon/src/brainproc.rs",
2026-06-20T11:21:58.6092096Z               "line": 874
2026-06-20T11:21:58.6092349Z             },
2026-06-20T11:21:58.6092576Z             {
2026-06-20T11:21:58.6092949Z               "path": "crates/spt-daemon/src/brainproc.rs",
2026-06-20T11:21:58.6093326Z               "line": 915
2026-06-20T11:21:58.6093579Z             },
2026-06-20T11:21:58.6093821Z             {
2026-06-20T11:21:58.6094192Z               "path": "crates/spt-daemon/src/brainproc.rs",
2026-06-20T11:21:58.6094454Z               "line": 926
2026-06-20T11:21:58.6094693Z             },
2026-06-20T11:21:58.6094946Z             {
2026-06-20T11:21:58.6095299Z               "path": "crates/spt-daemon/src/relcache.rs",
2026-06-20T11:21:58.6095566Z               "line": 358
2026-06-20T11:21:58.6095794Z             }
2026-06-20T11:21:58.6096047Z           ]
2026-06-20T11:21:58.6096408Z         },
2026-06-20T11:21:58.6096763Z         "int": {
2026-06-20T11:21:58.6097189Z           "complete": true,
2026-06-20T11:21:58.6097470Z           "evidence": [
2026-06-20T11:21:58.6097707Z             {
2026-06-20T11:21:58.6098118Z               "path": "crates/spt/tests/brain_respawn_rename.rs",
2026-06-20T11:21:58.6098410Z               "line": 30
2026-06-20T11:21:58.6098725Z             }
2026-06-20T11:21:58.6099077Z           ]
2026-06-20T11:21:58.6099332Z         },
2026-06-20T11:21:58.6099592Z         "unit": {
2026-06-20T11:21:58.6099945Z           "complete": true,
2026-06-20T11:21:58.6100212Z           "evidence": [
2026-06-20T11:21:58.6100466Z             {
2026-06-20T11:21:58.6100981Z               "path": "crates/spt-daemon/src/brainproc.rs",
2026-06-20T11:21:58.6101262Z               "line": 1493
2026-06-20T11:21:58.6101514Z             },
2026-06-20T11:21:58.6101747Z             {
2026-06-20T11:21:58.6102112Z               "path": "crates/spt-daemon/src/brainproc.rs",
2026-06-20T11:21:58.6102370Z               "line": 1518
2026-06-20T11:21:58.6102637Z             },
2026-06-20T11:21:58.6102884Z             {
2026-06-20T11:21:58.6103271Z               "path": "crates/spt-daemon/src/brainproc.rs",
2026-06-20T11:21:58.6103553Z               "line": 1535
2026-06-20T11:21:58.6103804Z             },
2026-06-20T11:21:58.6104119Z             {
2026-06-20T11:21:58.6104497Z               "path": "crates/spt-daemon/src/brainproc.rs",
2026-06-20T11:21:58.6104756Z               "line": 1578
2026-06-20T11:21:58.6105000Z             }
2026-06-20T11:21:58.6105234Z           ]
2026-06-20T11:21:58.6105473Z         }
2026-06-20T11:21:58.6105715Z       }
2026-06-20T11:21:58.6105959Z     },
2026-06-20T11:21:58.6106211Z     {
2026-06-20T11:21:58.6106631Z       "id": "REQ-HAZARD-BRAIN-RESTART-LIFECYCLE-REHYDRATE",
2026-06-20T11:21:58.6114026Z       "title": "B4 (deepest): a bare brain restart (broker survives) REHYDRATES the live-agent lifecycle so post-restart endpoints are hosted + attachable. Today resume_sessions (brainproc.rs:186, brain.rs:797-809) re-subscribes to the broker's PTY sessions but ALL BrainLifecycle instances (lifecycle.rs:58-130; the ephemeral brain.rs:254-275) are LOST on restart → a post-restart live endpoint gets no livehost → its Psyche is never (re)hosted and new spawns die / can't attach until a FULL daemon reset (operator: perri's brain kill+restart wedged everything until a full daemon kill). FIX: on brain startup, rebuild a BrainLifecycle per resumed live-capable session — load the manifest from the adapter registry → instantiate → start the pulse — the rehydrate the resume no-op cannot do. Composes with B2 (the reconcile re-hosts from the honest on-disk status after rehydrate). (v0.12.0)",
2026-06-20T11:21:58.6114466Z       "requiredStages": [],
2026-06-20T11:21:58.6114723Z       "stages": {
2026-06-20T11:21:58.6114965Z         "doc": {
2026-06-20T11:21:58.6115236Z           "complete": false,
2026-06-20T11:21:58.6115494Z           "evidence": []
2026-06-20T11:21:58.6115742Z         },
2026-06-20T11:21:58.6115985Z         "impl": {
2026-06-20T11:21:58.6116265Z           "complete": false,
2026-06-20T11:21:58.6116533Z           "evidence": []
2026-06-20T11:21:58.6116767Z         },
2026-06-20T11:21:58.6117011Z         "int": {
2026-06-20T11:21:58.6117277Z           "complete": false,
2026-06-20T11:21:58.6117543Z           "evidence": []
2026-06-20T11:21:58.6117903Z         },
2026-06-20T11:21:58.6118160Z         "unit": {
2026-06-20T11:21:58.6118437Z           "complete": false,
2026-06-20T11:21:58.6118699Z           "evidence": []
2026-06-20T11:21:58.6119024Z         }
2026-06-20T11:21:58.6119258Z       }
2026-06-20T11:21:58.6119505Z     },
2026-06-20T11:21:58.6119739Z     {
2026-06-20T11:21:58.6120116Z       "id": "REQ-HAZARD-BRAIN-RESTART-PSYCHE-DUP",
2026-06-20T11:21:58.6130724Z       "title": "A bare brain restart leaves EXACTLY ONE `{id}-psyche` process per endpoint — no duplicate. On an abrupt brain death stop_host never runs (the LiveSet + owned child handles die with the brain) and Breap's job/group only reaps at DAEMON stop, so the PRIOR brain's Psyche stays ALIVE; the respawned brain's reconcile re-hosts a SECOND Psyche and overwrites the `{id}-psyche` perch pid, leaving the old one untracked + alive = a duplicate that lingers until daemon-stop (the operator's 'brain kill+restart wedged everything'). FIX: at brain start, BEFORE the first reconcile re-hosts, reap any pre-existing `{id}-psyche` orphan — ID-SPECIFICALLY (recycle-safe on the shared box, where sibling agents share the `claude` basename): scoped-kill the recorded pid ONLY IF it is alive AND its exe basename == the adapter's psyche program (normalize_basename) AND its COMMAND LINE contains the full psyche id `<id>-psyche` (baked via {id}); a sibling never carries THIS id, and any unreadable signal FAILS SAFE (decline to reap — a missed dup is bounded by Breap, a wrong-kill is catastrophic). CAVEAT: the cmdline carries `<id>-psyche` only when the adapter's psyche_init.command uses {id} (the norm); a non-{id} adapter safely MISSES the reap (today's behavior, Breap bounds it) — never a wrong-kill. (v0.12.0)",
2026-06-20T11:21:58.6131075Z       "requiredStages": [
2026-06-20T11:21:58.6131311Z         "impl",
2026-06-20T11:21:58.6131559Z         "unit",
2026-06-20T11:21:58.6131803Z         "int"
2026-06-20T11:21:58.6132032Z       ],
2026-06-20T11:21:58.6132284Z       "stages": {
2026-06-20T11:21:58.6132555Z         "doc": {
2026-06-20T11:21:58.6132827Z           "complete": false,
2026-06-20T11:21:58.6133095Z           "evidence": []
2026-06-20T11:21:58.6133339Z         },
2026-06-20T11:21:58.6133589Z         "impl": {
2026-06-20T11:21:58.6133863Z           "complete": true,
2026-06-20T11:21:58.6134121Z           "evidence": [
2026-06-20T11:21:58.6134384Z             {
2026-06-20T11:21:58.6134760Z               "path": "crates/spt-daemon/src/livehost.rs",
2026-06-20T11:21:58.6135012Z               "line": 570
2026-06-20T11:21:58.6135267Z             },
2026-06-20T11:21:58.6135509Z             {
2026-06-20T11:21:58.6135877Z               "path": "crates/spt-daemon/src/livehost.rs",
2026-06-20T11:21:58.6136144Z               "line": 594
2026-06-20T11:21:58.6136390Z             },
2026-06-20T11:21:58.6136634Z             {
2026-06-20T11:21:58.6136990Z               "path": "crates/spt-daemon/src/livehost.rs",
2026-06-20T11:21:58.6137253Z               "line": 620
2026-06-20T11:21:58.6137502Z             },
2026-06-20T11:21:58.6141991Z             {
2026-06-20T11:21:58.6142424Z               "path": "crates/spt-daemon/src/livehost.rs",
2026-06-20T11:21:58.6142687Z               "line": 679
2026-06-20T11:21:58.6142940Z             },
2026-06-20T11:21:58.6143187Z             {
2026-06-20T11:21:58.6143532Z               "path": "crates/spt-store/src/proc.rs",
2026-06-20T11:21:58.6143956Z               "line": 89
2026-06-20T11:21:58.6144197Z             },
2026-06-20T11:21:58.6144447Z             {
2026-06-20T11:21:58.6144795Z               "path": "crates/spt-store/src/proc.rs",
2026-06-20T11:21:58.6145062Z               "line": 134
2026-06-20T11:21:58.6145302Z             }
2026-06-20T11:21:58.6145550Z           ]
2026-06-20T11:21:58.6145793Z         },
2026-06-20T11:21:58.6146040Z         "int": {
2026-06-20T11:21:58.6146316Z           "complete": true,
2026-06-20T11:21:58.6146573Z           "evidence": [
2026-06-20T11:21:58.6146818Z             {
2026-06-20T11:21:58.6147494Z               "path": "crates/spt/tests/brain_restart_psyche_dup_e2e.rs",
2026-06-20T11:21:58.6148639Z               "line": 20
2026-06-20T11:21:58.6149366Z             }
2026-06-20T11:21:58.6149917Z           ]
2026-06-20T11:21:58.6150522Z         },
2026-06-20T11:21:58.6151052Z         "unit": {
2026-06-20T11:21:58.6151629Z           "complete": true,
2026-06-20T11:21:58.6152284Z           "evidence": [
2026-06-20T11:21:58.6152913Z             {
2026-06-20T11:21:58.6153561Z               "path": "crates/spt-daemon/src/livehost.rs",
2026-06-20T11:21:58.6154378Z               "line": 1047
2026-06-20T11:21:58.6154988Z             },
2026-06-20T11:21:58.6155528Z             {
2026-06-20T11:21:58.6156156Z               "path": "crates/spt-store/src/proc.rs",
2026-06-20T11:21:58.6156944Z               "line": 445
2026-06-20T11:21:58.6157553Z             }
2026-06-20T11:21:58.6158083Z           ]
2026-06-20T11:21:58.6158593Z         }
2026-06-20T11:21:58.6159165Z       }
2026-06-20T11:21:58.6159670Z     },
2026-06-20T11:21:58.6160177Z     {
2026-06-20T11:21:58.6160821Z       "id": "REQ-HAZARD-BROKER-PROCESS-ISOLATION",
2026-06-20T11:21:58.6168718Z       "title": "Broker and brain are separate processes: the broker runs as its own long-lived per-machine process that survives every brain restart, so a routine (brain-only) self-update restarts the brain onto the swapped binary while every hosted endpoint (PTY child, live QUIC conn, listening socket) stays untouched at the PROCESS level. The in-process-thread broker (daemon.rs:165-170) is a regression that silently unrealizes REQ-UPD-3 — apply degrades to an in-process Brain::handoff no-op and new code does not run until an unrelated restart (KNOWN-HAZARDS 6.7). Evidence must prove process-level survival (SPIKE-01/03 productionized as int: PTY child + live QUIC survive a brain-PROCESS restart onto a swapped binary), re-pointing the regression-masked in-process int tags currently on REQ-DAEMON-2 / REQ-UPD-3 (ADR-0018).",
2026-06-20T11:21:58.6175777Z       "requiredStages": [
2026-06-20T11:21:58.6176385Z         "doc",
2026-06-20T11:21:58.6176953Z         "impl",
2026-06-20T11:21:58.6177488Z         "unit",
2026-06-20T11:21:58.6178030Z         "int"
2026-06-20T11:21:58.6178554Z       ],
2026-06-20T11:21:58.6179141Z       "stages": {
2026-06-20T11:21:58.6179694Z         "doc": {
2026-06-20T11:21:58.6180265Z           "complete": true,
2026-06-20T11:21:58.6180927Z           "evidence": [
2026-06-20T11:21:58.6181516Z             {
2026-06-20T11:21:58.6182117Z               "path": "docs/KNOWN-HAZARDS.md",
2026-06-20T11:21:58.6182886Z               "line": 302
2026-06-20T11:21:58.6183477Z             }
2026-06-20T11:21:58.6183998Z           ]
2026-06-20T11:21:58.6184513Z         },
2026-06-20T11:21:58.6185031Z         "impl": {
2026-06-20T11:21:58.6185604Z           "complete": true,
2026-06-20T11:21:58.6186238Z           "evidence": [
2026-06-20T11:21:58.6186827Z             {
2026-06-20T11:21:58.6187480Z               "path": "crates/spt-daemon/src/applyhost.rs",
2026-06-20T11:21:58.6188285Z               "line": 108
2026-06-20T11:21:58.6188901Z             },
2026-06-20T11:21:58.6189524Z             {
2026-06-20T11:21:58.6190144Z               "path": "crates/spt-daemon/src/brain.rs",
2026-06-20T11:21:58.6190932Z               "line": 822
2026-06-20T11:21:58.6191535Z             },
2026-06-20T11:21:58.6192071Z             {
2026-06-20T11:21:58.6192696Z               "path": "crates/spt-daemon/src/brain.rs",
2026-06-20T11:21:58.6193626Z               "line": 1022
2026-06-20T11:21:58.6194241Z             },
2026-06-20T11:21:58.6194767Z             {
2026-06-20T11:21:58.6195421Z               "path": "crates/spt-daemon/src/brainproc.rs",
2026-06-20T11:21:58.6196235Z               "line": 23
2026-06-20T11:21:58.6196831Z             },
2026-06-20T11:21:58.6197363Z             {
2026-06-20T11:21:58.6198016Z               "path": "crates/spt-daemon/src/brainproc.rs",
2026-06-20T11:21:58.6198831Z               "line": 113
2026-06-20T11:21:58.6199505Z             },
2026-06-20T11:21:58.6200041Z             {
2026-06-20T11:21:58.6200814Z               "path": "crates/spt-daemon/src/brainproc.rs",
2026-06-20T11:21:58.6201634Z               "line": 158
2026-06-20T11:21:58.6202227Z             },
2026-06-20T11:21:58.6202756Z             {
2026-06-20T11:21:58.6203405Z               "path": "crates/spt-daemon/src/brainproc.rs",
2026-06-20T11:21:58.6204215Z               "line": 218
2026-06-20T11:21:58.6204811Z             },
2026-06-20T11:21:58.6205337Z             {
2026-06-20T11:21:58.6205986Z               "path": "crates/spt-daemon/src/brainproc.rs",
2026-06-20T11:21:58.6206800Z               "line": 261
2026-06-20T11:21:58.6207396Z             },
2026-06-20T11:21:58.6207933Z             {
2026-06-20T11:21:58.6208586Z               "path": "crates/spt-daemon/src/brainproc.rs",
2026-06-20T11:21:58.6209464Z               "line": 275
2026-06-20T11:21:58.6210050Z             },
2026-06-20T11:21:58.6210573Z             {
2026-06-20T11:21:58.6211221Z               "path": "crates/spt-daemon/src/brainproc.rs",
2026-06-20T11:21:58.6212024Z               "line": 320
2026-06-20T11:21:58.6212636Z             },
2026-06-20T11:21:58.6213154Z             {
2026-06-20T11:21:58.6213802Z               "path": "crates/spt-daemon/src/brainproc.rs",
2026-06-20T11:21:58.6214623Z               "line": 347
2026-06-20T11:21:58.6215220Z             },
2026-06-20T11:21:58.6215740Z             {
2026-06-20T11:21:58.6216397Z               "path": "crates/spt-daemon/src/brainproc.rs",
2026-06-20T11:21:58.6217204Z               "line": 359
2026-06-20T11:21:58.6217805Z             },
2026-06-20T11:21:58.6218330Z             {
2026-06-20T11:21:58.6219056Z               "path": "crates/spt-daemon/src/brainproc.rs",
2026-06-20T11:21:58.6219876Z               "line": 373
2026-06-20T11:21:58.6220466Z             },
2026-06-20T11:21:58.6220985Z             {
2026-06-20T11:21:58.6221630Z               "path": "crates/spt-daemon/src/brainproc.rs",
2026-06-20T11:21:58.6222430Z               "line": 400
2026-06-20T11:21:58.6223021Z             },
2026-06-20T11:21:58.6223552Z             {
2026-06-20T11:21:58.6224202Z               "path": "crates/spt-daemon/src/brainproc.rs",
2026-06-20T11:21:58.6225011Z               "line": 643
2026-06-20T11:21:58.6225607Z             },
2026-06-20T11:21:58.6226136Z             {
2026-06-20T11:21:58.6226773Z               "path": "crates/spt-daemon/src/brainproc.rs",
2026-06-20T11:21:58.6227587Z               "line": 989
2026-06-20T11:21:58.6228188Z             },
2026-06-20T11:21:58.6228711Z             {
2026-06-20T11:21:58.6229420Z               "path": "crates/spt-daemon/src/broker.rs",
2026-06-20T11:21:58.6230211Z               "line": 256
2026-06-20T11:21:58.6230807Z             },
2026-06-20T11:21:58.6231332Z             {
2026-06-20T11:21:58.6231965Z               "path": "crates/spt-daemon/src/broker.rs",
2026-06-20T11:21:58.6232761Z               "line": 1105
2026-06-20T11:21:58.6233366Z             },
2026-06-20T11:21:58.6233899Z             {
2026-06-20T11:21:58.6234537Z               "path": "crates/spt-daemon/src/broker.rs",
2026-06-20T11:21:58.6235337Z               "line": 1177
2026-06-20T11:21:58.6235929Z             },
2026-06-20T11:21:58.6236462Z             {
2026-06-20T11:21:58.6237090Z               "path": "crates/spt-daemon/src/broker.rs",
2026-06-20T11:21:58.6237890Z               "line": 1189
2026-06-20T11:21:58.6238486Z             },
2026-06-20T11:21:58.6239356Z             {
2026-06-20T11:21:58.6239995Z               "path": "crates/spt-daemon/src/broker.rs",
2026-06-20T11:21:58.6240791Z               "line": 1804
2026-06-20T11:21:58.6241401Z             },
2026-06-20T11:21:58.6241939Z             {
2026-06-20T11:21:58.6242578Z               "path": "crates/spt-daemon/src/daemon.rs",
2026-06-20T11:21:58.6243360Z               "line": 188
2026-06-20T11:21:58.6243951Z             },
2026-06-20T11:21:58.6244487Z             {
2026-06-20T11:21:58.6245107Z               "path": "crates/spt-daemon/src/daemon.rs",
2026-06-20T11:21:58.6245893Z               "line": 265
2026-06-20T11:21:58.6246498Z             },
2026-06-20T11:21:58.6247127Z             {
2026-06-20T11:21:58.6247754Z               "path": "crates/spt-daemon/src/daemon.rs",
2026-06-20T11:21:58.6248542Z               "line": 276
2026-06-20T11:21:58.6249204Z             },
2026-06-20T11:21:58.6249736Z             {
2026-06-20T11:21:58.6250368Z               "path": "crates/spt-daemon/src/daemon.rs",
2026-06-20T11:21:58.6251165Z               "line": 329
2026-06-20T11:21:58.6251766Z             },
2026-06-20T11:21:58.6252296Z             {
2026-06-20T11:21:58.6252933Z               "path": "crates/spt-daemon/src/deadline.rs",
2026-06-20T11:21:58.6253720Z               "line": 56
2026-06-20T11:21:58.6254307Z             },
2026-06-20T11:21:58.6254839Z             {
2026-06-20T11:21:58.6255480Z               "path": "crates/spt-daemon/src/deadline.rs",
2026-06-20T11:21:58.6256282Z               "line": 188
2026-06-20T11:21:58.6256879Z             },
2026-06-20T11:21:58.6257412Z             {
2026-06-20T11:21:58.6258046Z               "path": "crates/spt-daemon/src/endpoint.rs",
2026-06-20T11:21:58.6258863Z               "line": 82
2026-06-20T11:21:58.6259529Z             },
2026-06-20T11:21:58.6260066Z             {
2026-06-20T11:21:58.6260719Z               "path": "crates/spt-daemon/src/lifecycle.rs",
2026-06-20T11:21:58.6261529Z               "line": 308
2026-06-20T11:21:58.6262121Z             },
2026-06-20T11:21:58.6262650Z             {
2026-06-20T11:21:58.6263274Z               "path": "crates/spt-daemon/src/notif.rs",
2026-06-20T11:21:58.6264060Z               "line": 424
2026-06-20T11:21:58.6264656Z             },
2026-06-20T11:21:58.6265177Z             {
2026-06-20T11:21:58.6265764Z               "path": "crates/spt/src/cli.rs",
2026-06-20T11:21:58.6266518Z               "line": 2006
2026-06-20T11:21:58.6267114Z             }
2026-06-20T11:21:58.6267628Z           ]
2026-06-20T11:21:58.6268139Z         },
2026-06-20T11:21:58.6268641Z         "int": {
2026-06-20T11:21:58.6269295Z           "complete": true,
2026-06-20T11:21:58.6269924Z           "evidence": [
2026-06-20T11:21:58.6270515Z             {
2026-06-20T11:21:58.6271150Z               "path": "crates/spt/tests/brain_survive.rs",
2026-06-20T11:21:58.6271970Z               "line": 57
2026-06-20T11:21:58.6272553Z             },
2026-06-20T11:21:58.6273081Z             {
2026-06-20T11:21:58.6273699Z               "path": "crates/spt/tests/n1_pairing.rs",
2026-06-20T11:21:58.6274497Z               "line": 41
2026-06-20T11:21:58.6275089Z             }
2026-06-20T11:21:58.6275612Z           ]
2026-06-20T11:21:58.6276120Z         },
2026-06-20T11:21:58.6276634Z         "unit": {
2026-06-20T11:21:58.6277215Z           "complete": true,
2026-06-20T11:21:58.6277845Z           "evidence": [
2026-06-20T11:21:58.6278431Z             {
2026-06-20T11:21:58.6279153Z               "path": "crates/spt-daemon/src/applyhost.rs",
2026-06-20T11:21:58.6279978Z               "line": 532
2026-06-20T11:21:58.6280570Z             },
2026-06-20T11:21:58.6281109Z             {
2026-06-20T11:21:58.6281763Z               "path": "crates/spt-daemon/src/applyhost.rs",
2026-06-20T11:21:58.6282579Z               "line": 757
2026-06-20T11:21:58.6283169Z             },
2026-06-20T11:21:58.6283690Z             {
2026-06-20T11:21:58.6284327Z               "path": "crates/spt-daemon/src/brainproc.rs",
2026-06-20T11:21:58.6285147Z               "line": 1067
2026-06-20T11:21:58.6285753Z             },
2026-06-20T11:21:58.6286396Z             {
2026-06-20T11:21:58.6287033Z               "path": "crates/spt-daemon/src/brainproc.rs",
2026-06-20T11:21:58.6287829Z               "line": 1101
2026-06-20T11:21:58.6288415Z             },
2026-06-20T11:21:58.6289021Z             {
2026-06-20T11:21:58.6289665Z               "path": "crates/spt-daemon/src/brainproc.rs",
2026-06-20T11:21:58.6290472Z               "line": 1143
2026-06-20T11:21:58.6291069Z             },
2026-06-20T11:21:58.6291601Z             {
2026-06-20T11:21:58.6292251Z               "path": "crates/spt-daemon/src/brainproc.rs",
2026-06-20T11:21:58.6293053Z               "line": 1215
2026-06-20T11:21:58.6293763Z             },
2026-06-20T11:21:58.6294298Z             {
2026-06-20T11:21:58.6294930Z               "path": "crates/spt-daemon/src/brainproc.rs",
2026-06-20T11:21:58.6295754Z               "line": 1228
2026-06-20T11:21:58.6296347Z             },
2026-06-20T11:21:58.6296877Z             {
2026-06-20T11:21:58.6297507Z               "path": "crates/spt-daemon/src/brainproc.rs",
2026-06-20T11:21:58.6298317Z               "line": 1251
2026-06-20T11:21:58.6298908Z             },
2026-06-20T11:21:58.6299523Z             {
2026-06-20T11:21:58.6300168Z               "path": "crates/spt-daemon/src/brainproc.rs",
2026-06-20T11:21:58.6300980Z               "line": 1277
2026-06-20T11:21:58.6301580Z             },
2026-06-20T11:21:58.6302104Z             {
2026-06-20T11:21:58.6302740Z               "path": "crates/spt-daemon/src/brainproc.rs",
2026-06-20T11:21:58.6303556Z               "line": 1291
2026-06-20T11:21:58.6304151Z             },
2026-06-20T11:21:58.6304671Z             {
2026-06-20T11:21:58.6305309Z               "path": "crates/spt-daemon/src/brainproc.rs",
2026-06-20T11:21:58.6306135Z               "line": 1315
2026-06-20T11:21:58.6306731Z             },
2026-06-20T11:21:58.6307254Z             {
2026-06-20T11:21:58.6307895Z               "path": "crates/spt-daemon/src/brainproc.rs",
2026-06-20T11:21:58.6308702Z               "line": 1447
2026-06-20T11:21:58.6309430Z             },
2026-06-20T11:21:58.6309961Z             {
2026-06-20T11:21:58.6310607Z               "path": "crates/spt-daemon/src/brainproc.rs",
2026-06-20T11:21:58.6311410Z               "line": 1623
2026-06-20T11:21:58.6312016Z             },
2026-06-20T11:21:58.6312542Z             {
2026-06-20T11:21:58.6313183Z               "path": "crates/spt-daemon/src/brainproc.rs",
2026-06-20T11:21:58.6313991Z               "line": 1678
2026-06-20T11:21:58.6314593Z             },
2026-06-20T11:21:58.6315103Z             {
2026-06-20T11:21:58.6315742Z               "path": "crates/spt-daemon/src/brainproc.rs",
2026-06-20T11:21:58.6316546Z               "line": 1724
2026-06-20T11:21:58.6317152Z             },
2026-06-20T11:21:58.6317677Z             {
2026-06-20T11:21:58.6318324Z               "path": "crates/spt-daemon/src/brainproc.rs",
2026-06-20T11:21:58.6319209Z               "line": 1769
2026-06-20T11:21:58.6319804Z             },
2026-06-20T11:21:58.6320338Z             {
2026-06-20T11:21:58.6320995Z               "path": "crates/spt-daemon/src/brainproc.rs",
2026-06-20T11:21:58.6321810Z               "line": 1813
2026-06-20T11:21:58.6322424Z             },
2026-06-20T11:21:58.6322957Z             {
2026-06-20T11:21:58.6323591Z               "path": "crates/spt-daemon/src/brainproc.rs",
2026-06-20T11:21:58.6324395Z               "line": 1855
2026-06-20T11:21:58.6324991Z             },
2026-06-20T11:21:58.6325520Z             {
2026-06-20T11:21:58.6326149Z               "path": "crates/spt-daemon/src/broker.rs",
2026-06-20T11:21:58.6326940Z               "line": 2138
2026-06-20T11:21:58.6327546Z             },
2026-06-20T11:21:58.6328074Z             {
2026-06-20T11:21:58.6328722Z               "path": "crates/spt-daemon/src/deadline.rs",
2026-06-20T11:21:58.6329597Z               "line": 217
2026-06-20T11:21:58.6330193Z             },
2026-06-20T11:21:58.6330713Z             {
2026-06-20T11:21:58.6331353Z               "path": "crates/spt-daemon/src/deadline.rs",
2026-06-20T11:21:58.6332287Z               "line": 233
2026-06-20T11:21:58.6332873Z             },
2026-06-20T11:21:58.6333403Z             {
2026-06-20T11:21:58.6334042Z               "path": "crates/spt-daemon/src/deadline.rs",
2026-06-20T11:21:58.6334844Z               "line": 254
2026-06-20T11:21:58.6335436Z             },
2026-06-20T11:21:58.6335961Z             {
2026-06-20T11:21:58.6336604Z               "path": "crates/spt-daemon/src/deadline.rs",
2026-06-20T11:21:58.6337418Z               "line": 265
2026-06-20T11:21:58.6338009Z             },
2026-06-20T11:21:58.6338534Z             {
2026-06-20T11:21:58.6339239Z               "path": "crates/spt-daemon/src/deadline.rs",
2026-06-20T11:21:58.6340162Z               "line": 278
2026-06-20T11:21:58.6340758Z             },
2026-06-20T11:21:58.6341278Z             {
2026-06-20T11:21:58.6341913Z               "path": "crates/spt-daemon/src/deadline.rs",
2026-06-20T11:21:58.6342710Z               "line": 289
2026-06-20T11:21:58.6343301Z             },
2026-06-20T11:21:58.6343845Z             {
2026-06-20T11:21:58.6344485Z               "path": "crates/spt-daemon/src/deadline.rs",
2026-06-20T11:21:58.6345295Z               "line": 301
2026-06-20T11:21:58.6345887Z             },
2026-06-20T11:21:58.6346426Z             {
2026-06-20T11:21:58.6347051Z               "path": "crates/spt-daemon/src/deadline.rs",
2026-06-20T11:21:58.6347859Z               "line": 312
2026-06-20T11:21:58.6348456Z             },
2026-06-20T11:21:58.6349094Z             {
2026-06-20T11:21:58.6349738Z               "path": "crates/spt-daemon/src/deadline.rs",
2026-06-20T11:21:58.6350531Z               "line": 323
2026-06-20T11:21:58.6351127Z             },
2026-06-20T11:21:58.6351661Z             {
2026-06-20T11:21:58.6352300Z               "path": "crates/spt-daemon/src/deadline.rs",
2026-06-20T11:21:58.6353097Z               "line": 332
2026-06-20T11:21:58.6353698Z             },
2026-06-20T11:21:58.6354237Z             {
2026-06-20T11:21:58.6354890Z               "path": "crates/spt-daemon/src/deadline.rs",
2026-06-20T11:21:58.6355703Z               "line": 342
2026-06-20T11:21:58.6356293Z             },
2026-06-20T11:21:58.6356833Z             {
2026-06-20T11:21:58.6357477Z               "path": "crates/spt-daemon/src/deadline.rs",
2026-06-20T11:21:58.6358286Z               "line": 358
2026-06-20T11:21:58.6358868Z             },
2026-06-20T11:21:58.6359482Z             {
2026-06-20T11:21:58.6360122Z               "path": "crates/spt-daemon/src/lifecycle.rs",
2026-06-20T11:21:58.6366335Z               "line": 758
2026-06-20T11:21:58.6366993Z             },
2026-06-20T11:21:58.6367542Z             {
2026-06-20T11:21:58.6368205Z               "path": "crates/spt-daemon/src/lifecycle.rs",
2026-06-20T11:21:58.6369142Z               "line": 794
2026-06-20T11:21:58.6369767Z             },
2026-06-20T11:21:58.6370305Z             {
2026-06-20T11:21:58.6370929Z               "path": "crates/spt-daemon/src/notif.rs",
2026-06-20T11:21:58.6371738Z               "line": 966
2026-06-20T11:21:58.6372349Z             },
2026-06-20T11:21:58.6372877Z             {
2026-06-20T11:21:58.6373516Z               "path": "crates/spt-daemon/tests/resume.rs",
2026-06-20T11:21:58.6374309Z               "line": 145
2026-06-20T11:21:58.6374906Z             },
2026-06-20T11:21:58.6375439Z             {
2026-06-20T11:21:58.6376078Z               "path": "crates/spt-daemon/tests/resume.rs",
2026-06-20T11:21:58.6376891Z               "line": 224
2026-06-20T11:21:58.6377501Z             },
2026-06-20T11:21:58.6378019Z             {
2026-06-20T11:21:58.6378663Z               "path": "crates/spt-daemon/tests/resume.rs",
2026-06-20T11:21:58.6379540Z               "line": 293
2026-06-20T11:21:58.6380131Z             },
2026-06-20T11:21:58.6380671Z             {
2026-06-20T11:21:58.6381305Z               "path": "crates/spt/tests/brain_split.rs",
2026-06-20T11:21:58.6382097Z               "line": 17
2026-06-20T11:21:58.6382684Z             },
2026-06-20T11:21:58.6383218Z             {
2026-06-20T11:21:58.6383848Z               "path": "crates/spt/tests/brain_split.rs",
2026-06-20T11:21:58.6384845Z               "line": 104
2026-06-20T11:21:58.6385446Z             }
2026-06-20T11:21:58.6385975Z           ]
2026-06-20T11:21:58.6386481Z         }
2026-06-20T11:21:58.6386980Z       }
2026-06-20T11:21:58.6387489Z     },
2026-06-20T11:21:58.6387984Z     {
2026-06-20T11:21:58.6388579Z       "id": "REQ-HAZARD-BROKER-QUIC-DEADLINE",
2026-06-20T11:21:58.6397919Z       "title": "The broker bounds every brain-waiting QUIC op (dial / open_stream / send_stream) so a black-holed or dead peer fails PROMPTLY with an ORDINARY error the broker REPLIES, never an unbounded await. The bound (< the brain's 30s PUMP_PEER_IO_TIMEOUT so the BROKER fires first) surfaces to the pump as a normal broker error reply → peer_outcome's non-TimedOut arm → drop conn + redial next tick, the round CONTINUES and the heartbeat keeps advancing — it must NEVER manifest as the brain's own read-deadline (the A-half poison → supervised-restart path REQ-HAZARD-PUMP-IPC-DEADLINE guards). Exactly-once is preserved: a timed-out journaled op fails INSIDE its apply_once closure so no phantom conn_id/stream_id is recorded and a fresh tick re-dials cleanly. The happy path is unchanged (a live peer completes with zero added latency; the bound only bites a non-responsive peer). This is the ROOT-cause cure for the 2.2h hfenduleam pump wedge — a dead roster peer whose QUIC path the broker awaited unbounded — recurring on hfenduleam 2026-06-16.",
2026-06-20T11:21:58.6407259Z       "requiredStages": [
2026-06-20T11:21:58.6407888Z         "doc",
2026-06-20T11:21:58.6408417Z         "impl",
2026-06-20T11:21:58.6409042Z         "unit",
2026-06-20T11:21:58.6409571Z         "int"
2026-06-20T11:21:58.6410131Z       ],
2026-06-20T11:21:58.6410635Z       "stages": {
2026-06-20T11:21:58.6411197Z         "doc": {
2026-06-20T11:21:58.6411760Z           "complete": true,
2026-06-20T11:21:58.6412399Z           "evidence": [
2026-06-20T11:21:58.6412976Z             {
2026-06-20T11:21:58.6413567Z               "path": "docs/KNOWN-HAZARDS.md",
2026-06-20T11:21:58.6414346Z               "line": 388
2026-06-20T11:21:58.6414937Z             }
2026-06-20T11:21:58.6415460Z           ]
2026-06-20T11:21:58.6415967Z         },
2026-06-20T11:21:58.6416478Z         "impl": {
2026-06-20T11:21:58.6417059Z           "complete": true,
2026-06-20T11:21:58.6417693Z           "evidence": [
2026-06-20T11:21:58.6418265Z             {
2026-06-20T11:21:58.6418896Z               "path": "crates/spt-daemon/src/nethost.rs",
2026-06-20T11:21:58.6419883Z               "line": 773
2026-06-20T11:21:58.6420475Z             },
2026-06-20T11:21:58.6421006Z             {
2026-06-20T11:21:58.6421647Z               "path": "crates/spt-daemon/src/nethost.rs",
2026-06-20T11:21:58.6422462Z               "line": 796
2026-06-20T11:21:58.6423053Z             }
2026-06-20T11:21:58.6423579Z           ]
2026-06-20T11:21:58.6424089Z         },
2026-06-20T11:21:58.6424601Z         "int": {
2026-06-20T11:21:58.6425168Z           "complete": true,
2026-06-20T11:21:58.6425798Z           "evidence": [
2026-06-20T11:21:58.6426389Z             {
2026-06-20T11:21:58.6427052Z               "path": "crates/spt-daemon/tests/netbroker.rs",
2026-06-20T11:21:58.6427877Z               "line": 228
2026-06-20T11:21:58.6428473Z             },
2026-06-20T11:21:58.6429075Z             {
2026-06-20T11:21:58.6429710Z               "path": "crates/spt-daemon/tests/pump.rs",
2026-06-20T11:21:58.6430486Z               "line": 468
2026-06-20T11:21:58.6431083Z             }
2026-06-20T11:21:58.6431608Z           ]
2026-06-20T11:21:58.6432120Z         },
2026-06-20T11:21:58.6432632Z         "unit": {
2026-06-20T11:21:58.6433209Z           "complete": true,
2026-06-20T11:21:58.6433848Z           "evidence": [
2026-06-20T11:21:58.6434428Z             {
2026-06-20T11:21:58.6435055Z               "path": "crates/spt-daemon/src/nethost.rs",
2026-06-20T11:21:58.6435856Z               "line": 1495
2026-06-20T11:21:58.6436457Z             }
2026-06-20T11:21:58.6436993Z           ]
2026-06-20T11:21:58.6437502Z         }
2026-06-20T11:21:58.6438198Z       }
2026-06-20T11:21:58.6438700Z     },
2026-06-20T11:21:58.6439287Z     {
2026-06-20T11:21:58.6439890Z       "id": "REQ-HAZARD-BROKER-SEED-WIRE-SKEW",
2026-06-20T11:21:58.6450710Z       "title": "A daemon-state wire-format change (e.g. the v0.9.0 adapter-agnostic Seed) does NOT take effect until a DELIBERATE full broker restart: the broker serves the seed-control channel and is RESIDENT across a brain-only self-update (ADR-0004 no-terminate-during-update forbids auto-killing it), so a NEW-version CLI talking to a still-resident OLD broker fails the seed handshake — the old broker cannot deserialize the new Seed (its formerly-required `adapter` field is gone) and drops the conn without an ack, which surfaces to the CLI as a raw UnexpectedEof 'failed to fill whole buffer'. spt-core must (a) surface an ACTIONABLE diagnostic on that seed-ack EOF (name the stale-broker cause + the `spt daemon stop` fix — the broker restarts on the next api call), never the cryptic io error; and (b) document the operational rule (a deliberate broker restart is required on any daemon-state wire change — NOT automatic) + the FORWARD discipline (daemon-state/Seed schema changes stay additive + serde-default so a resident OLD broker tolerates a NEW CLI across a brain-only update; note this would NOT have rescued 0.9.0 itself, since the old broker's `adapter` was a required field). perri PREP-4 FINDING 1 (v0.9.0 CLI vs stale 0.8.x broker).",
2026-06-20T11:21:58.6476366Z       "requiredStages": [
2026-06-20T11:21:58.6476991Z         "doc",
2026-06-20T11:21:58.6477514Z         "impl",
2026-06-20T11:21:58.6478049Z         "unit"
2026-06-20T11:21:58.6478622Z       ],
2026-06-20T11:21:58.6479355Z       "stages": {
2026-06-20T11:21:58.6480001Z         "doc": {
2026-06-20T11:21:58.6480696Z           "complete": true,
2026-06-20T11:21:58.6481446Z           "evidence": [
2026-06-20T11:21:58.6482146Z             {
2026-06-20T11:21:58.6482868Z               "path": "docs/KNOWN-HAZARDS.md",
2026-06-20T11:21:58.6483821Z               "line": 395
2026-06-20T11:21:58.6484546Z             }
2026-06-20T11:21:58.6485175Z           ]
2026-06-20T11:21:58.6485781Z         },
2026-06-20T11:21:58.6486405Z         "impl": {
2026-06-20T11:21:58.6487090Z           "complete": true,
2026-06-20T11:21:58.6487866Z           "evidence": [
2026-06-20T11:21:58.6488548Z             {
2026-06-20T11:21:58.6489286Z               "path": "crates/spt/src/api/startup.rs",
2026-06-20T11:21:58.6490067Z               "line": 75
2026-06-20T11:21:58.6490637Z             }
2026-06-20T11:21:58.6491148Z           ]
2026-06-20T11:21:58.6491639Z         },
2026-06-20T11:21:58.6492134Z         "int": {
2026-06-20T11:21:58.6492691Z           "complete": false,
2026-06-20T11:21:58.6493314Z           "evidence": []
2026-06-20T11:21:58.6493885Z         },
2026-06-20T11:21:58.6494386Z         "unit": {
2026-06-20T11:21:58.6494946Z           "complete": true,
2026-06-20T11:21:58.6495559Z           "evidence": [
2026-06-20T11:21:58.6496120Z             {
2026-06-20T11:21:58.6496736Z               "path": "crates/spt/src/api/startup.rs",
2026-06-20T11:21:58.6497514Z               "line": 632
2026-06-20T11:21:58.6498101Z             }
2026-06-20T11:21:58.6498607Z           ]
2026-06-20T11:21:58.6499184Z         }
2026-06-20T11:21:58.6499680Z       }
2026-06-20T11:21:58.6500156Z     },
2026-06-20T11:21:58.6500637Z     {
2026-06-20T11:21:58.6501201Z       "id": "REQ-HAZARD-CASCADE-WIPE-GUARD",
2026-06-20T11:21:58.6502189Z       "title": "No hard-delete of a parent hosting non-empty children (6.3)",
2026-06-20T11:21:58.6503146Z       "requiredStages": [
2026-06-20T11:21:58.6503735Z         "impl",
2026-06-20T11:21:58.6504251Z         "unit"
2026-06-20T11:21:58.6504765Z       ],
2026-06-20T11:21:58.6505270Z       "stages": {
2026-06-20T11:21:58.6505782Z         "doc": {
2026-06-20T11:21:58.6506351Z           "complete": false,
2026-06-20T11:21:58.6506977Z           "evidence": []
2026-06-20T11:21:58.6507539Z         },
2026-06-20T11:21:58.6508032Z         "impl": {
2026-06-20T11:21:58.6508852Z           "complete": true,
2026-06-20T11:21:58.6509562Z           "evidence": [
2026-06-20T11:21:58.6510120Z             {
2026-06-20T11:21:58.6510754Z               "path": "crates/spt/src/api/reporting.rs",
2026-06-20T11:21:58.6511529Z               "line": 172
2026-06-20T11:21:58.6512100Z             },
2026-06-20T11:21:58.6512611Z             {
2026-06-20T11:21:58.6513203Z               "path": "crates/spt/src/api/worker.rs",
2026-06-20T11:21:58.6513952Z               "line": 18
2026-06-20T11:21:58.6514524Z             },
2026-06-20T11:21:58.6515025Z             {
2026-06-20T11:21:58.6515631Z               "path": "crates/spt/src/api/worker.rs",
2026-06-20T11:21:58.6516555Z               "line": 100
2026-06-20T11:21:58.6517155Z             }
2026-06-20T11:21:58.6517667Z           ]
2026-06-20T11:21:58.6518161Z         },
2026-06-20T11:21:58.6518653Z         "int": {
2026-06-20T11:21:58.6519294Z           "complete": false,
2026-06-20T11:21:58.6519923Z           "evidence": []
2026-06-20T11:21:58.6520505Z         },
2026-06-20T11:21:58.6521010Z         "unit": {
2026-06-20T11:21:58.6521554Z           "complete": true,
2026-06-20T11:21:58.6522175Z           "evidence": [
2026-06-20T11:21:58.6522738Z             {
2026-06-20T11:21:58.6523352Z               "path": "crates/spt/src/api/reporting.rs",
2026-06-20T11:21:58.6524139Z               "line": 857
2026-06-20T11:21:58.6524718Z             },
2026-06-20T11:21:58.6525237Z             {
2026-06-20T11:21:58.6525833Z               "path": "crates/spt/src/api/worker.rs",
2026-06-20T11:21:58.6526592Z               "line": 161
2026-06-20T11:21:58.6527162Z             },
2026-06-20T11:21:58.6527674Z             {
2026-06-20T11:21:58.6528278Z               "path": "crates/spt/src/api/worker.rs",
2026-06-20T11:21:58.6529118Z               "line": 233
2026-06-20T11:21:58.6529696Z             }
2026-06-20T11:21:58.6530202Z           ]
2026-06-20T11:21:58.6530692Z         }
2026-06-20T11:21:58.6531183Z       }
2026-06-20T11:21:58.6531666Z     },
2026-06-20T11:21:58.6532142Z     {
2026-06-20T11:21:58.6532711Z       "id": "REQ-HAZARD-CHILD-CONSOLE-FLASH",
2026-06-20T11:21:58.6534480Z       "title": "Console-subsystem children of the console-less daemon spawn with CREATE_NO_WINDOW, or each spawn flashes a visible blank window on the user's desktop (5.8)",
2026-06-20T11:21:58.6536203Z       "requiredStages": [
2026-06-20T11:21:58.6536814Z         "impl",
2026-06-20T11:21:58.6537343Z         "unit"
2026-06-20T11:21:58.6537848Z       ],
2026-06-20T11:21:58.6538347Z       "stages": {
2026-06-20T11:21:58.6538586Z         "doc": {
2026-06-20T11:21:58.6538848Z           "complete": true,
2026-06-20T11:21:58.6539158Z           "evidence": [
2026-06-20T11:21:58.6539407Z             {
2026-06-20T11:21:58.6539712Z               "path": "docs/KNOWN-HAZARDS.md",
2026-06-20T11:21:58.6539967Z               "line": 220
2026-06-20T11:21:58.6540208Z             }
2026-06-20T11:21:58.6540438Z           ]
2026-06-20T11:21:58.6540685Z         },
2026-06-20T11:21:58.6540932Z         "impl": {
2026-06-20T11:21:58.6541209Z           "complete": true,
2026-06-20T11:21:58.6541472Z           "evidence": [
2026-06-20T11:21:58.6541697Z             {
2026-06-20T11:21:58.6542058Z               "path": "crates/spt-daemon/src/shellhost.rs",
2026-06-20T11:21:58.6542312Z               "line": 316
2026-06-20T11:21:58.6542536Z             },
2026-06-20T11:21:58.6542768Z             {
2026-06-20T11:21:58.6543123Z               "path": "crates/spt-runtime/src/runtime.rs",
2026-06-20T11:21:58.6543390Z               "line": 356
2026-06-20T11:21:58.6543615Z             },
2026-06-20T11:21:58.6543843Z             {
2026-06-20T11:21:58.6544197Z               "path": "crates/spt-runtime/src/runtime.rs",
2026-06-20T11:21:58.6544458Z               "line": 578
2026-06-20T11:21:58.6544692Z             },
2026-06-20T11:21:58.6544930Z             {
2026-06-20T11:21:58.6545255Z               "path": "crates/spt-store/src/gitrun.rs",
2026-06-20T11:21:58.6545502Z               "line": 77
2026-06-20T11:21:58.6545910Z             }
2026-06-20T11:21:58.6546143Z           ]
2026-06-20T11:21:58.6546381Z         },
2026-06-20T11:21:58.6546615Z         "int": {
2026-06-20T11:21:58.6546886Z           "complete": false,
2026-06-20T11:21:58.6547140Z           "evidence": []
2026-06-20T11:21:58.6547374Z         },
2026-06-20T11:21:58.6547621Z         "unit": {
2026-06-20T11:21:58.6547878Z           "complete": true,
2026-06-20T11:21:58.6548136Z           "evidence": [
2026-06-20T11:21:58.6548364Z             {
2026-06-20T11:21:58.6548718Z               "path": "crates/spt-runtime/src/runtime.rs",
2026-06-20T11:21:58.6549065Z               "line": 747
2026-06-20T11:21:58.6549294Z             },
2026-06-20T11:21:58.6549671Z             {
2026-06-20T11:21:58.6550024Z               "path": "crates/spt-runtime/src/runtime.rs",
2026-06-20T11:21:58.6550277Z               "line": 785
2026-06-20T11:21:58.6550513Z             },
2026-06-20T11:21:58.6550759Z             {
2026-06-20T11:21:58.6551088Z               "path": "crates/spt-store/src/gitrun.rs",
2026-06-20T11:21:58.6551341Z               "line": 166
2026-06-20T11:21:58.6551585Z             }
2026-06-20T11:21:58.6551817Z           ]
2026-06-20T11:21:58.6552055Z         }
2026-06-20T11:21:58.6552285Z       }
2026-06-20T11:21:58.6552519Z     },
2026-06-20T11:21:58.6552742Z     {
2026-06-20T11:21:58.6553086Z       "id": "REQ-HAZARD-CONFLICT-BOTH-PRESERVED",
2026-06-20T11:21:58.6554800Z       "title": "A surfaced concurrent context pair is durably preserved (both versions, tracked artifacts) until a strictly dominating write clears it; no reconcile failure path discards an unmerged version (6.6, ADR-0013)",
2026-06-20T11:21:58.6555067Z       "requiredStages": [
2026-06-20T11:21:58.6555309Z         "impl",
2026-06-20T11:21:58.6555552Z         "unit"
2026-06-20T11:21:58.6555782Z       ],
2026-06-20T11:21:58.6556033Z       "stages": {
2026-06-20T11:21:58.6556273Z         "doc": {
2026-06-20T11:21:58.6556545Z           "complete": false,
2026-06-20T11:21:58.6556794Z           "evidence": []
2026-06-20T11:21:58.6557051Z         },
2026-06-20T11:21:58.6557314Z         "impl": {
2026-06-20T11:21:58.6557590Z           "complete": true,
2026-06-20T11:21:58.6557843Z           "evidence": [
2026-06-20T11:21:58.6558090Z             {
2026-06-20T11:21:58.6558448Z               "path": "crates/spt-daemon/src/reconcile.rs",
2026-06-20T11:21:58.6558696Z               "line": 22
2026-06-20T11:21:58.6558934Z             },
2026-06-20T11:21:58.6559263Z             {
2026-06-20T11:21:58.6559587Z               "path": "crates/spt-daemon/src/sync.rs",
2026-06-20T11:21:58.6559844Z               "line": 487
2026-06-20T11:21:58.6560082Z             },
2026-06-20T11:21:58.6560316Z             {
2026-06-20T11:21:58.6560654Z               "path": "crates/spt-live/src/reconcile.rs",
2026-06-20T11:21:58.6560913Z               "line": 17
2026-06-20T11:21:58.6561155Z             },
2026-06-20T11:21:58.6561385Z             {
2026-06-20T11:21:58.6561738Z               "path": "crates/spt-live/src/reconcile.rs",
2026-06-20T11:21:58.6562000Z               "line": 147
2026-06-20T11:21:58.6562245Z             },
2026-06-20T11:21:58.6562479Z             {
2026-06-20T11:21:58.6562840Z               "path": "crates/spt-store/src/contextstore.rs",
2026-06-20T11:21:58.6563089Z               "line": 226
2026-06-20T11:21:58.6563327Z             },
2026-06-20T11:21:58.6563575Z             {
2026-06-20T11:21:58.6563940Z               "path": "crates/spt-store/src/contextstore.rs",
2026-06-20T11:21:58.6564195Z               "line": 251
2026-06-20T11:21:58.6564444Z             },
2026-06-20T11:21:58.6564716Z             {
2026-06-20T11:21:58.6565092Z               "path": "crates/spt-store/src/contextstore.rs",
2026-06-20T11:21:58.6565346Z               "line": 277
2026-06-20T11:21:58.6565583Z             },
2026-06-20T11:21:58.6565817Z             {
2026-06-20T11:21:58.6566170Z               "path": "crates/spt-store/src/syncmerge.rs",
2026-06-20T11:21:58.6566422Z               "line": 124
2026-06-20T11:21:58.6566669Z             },
2026-06-20T11:21:58.6567063Z             {
2026-06-20T11:21:58.6567410Z               "path": "crates/spt-store/src/syncmerge.rs",
2026-06-20T11:21:58.6567669Z               "line": 224
2026-06-20T11:21:58.6567908Z             }
2026-06-20T11:21:58.6568150Z           ]
2026-06-20T11:21:58.6568383Z         },
2026-06-20T11:21:58.6568622Z         "int": {
2026-06-20T11:21:58.6568899Z           "complete": false,
2026-06-20T11:21:58.6569228Z           "evidence": []
2026-06-20T11:21:58.6569475Z         },
2026-06-20T11:21:58.6569707Z         "unit": {
2026-06-20T11:21:58.6569975Z           "complete": true,
2026-06-20T11:21:58.6570228Z           "evidence": [
2026-06-20T11:21:58.6570453Z             {
2026-06-20T11:21:58.6570972Z               "path": "crates/spt-daemon/src/reconcile.rs",
2026-06-20T11:21:58.6571219Z               "line": 63
2026-06-20T11:21:58.6571463Z             },
2026-06-20T11:21:58.6571705Z             {
2026-06-20T11:21:58.6572070Z               "path": "crates/spt-daemon/src/reconcile.rs",
2026-06-20T11:21:58.6572327Z               "line": 73
2026-06-20T11:21:58.6572560Z             },
2026-06-20T11:21:58.6572805Z             {
2026-06-20T11:21:58.6573157Z               "path": "crates/spt-daemon/src/reconcile.rs",
2026-06-20T11:21:58.6573405Z               "line": 85
2026-06-20T11:21:58.6573630Z             },
2026-06-20T11:21:58.6573872Z             {
2026-06-20T11:21:58.6574221Z               "path": "crates/spt-daemon/tests/sync.rs",
2026-06-20T11:21:58.6574467Z               "line": 346
2026-06-20T11:21:58.6574700Z             },
2026-06-20T11:21:58.6574937Z             {
2026-06-20T11:21:58.6575286Z               "path": "crates/spt-live/src/reconcile.rs",
2026-06-20T11:21:58.6575548Z               "line": 281
2026-06-20T11:21:58.6575790Z             },
2026-06-20T11:21:58.6576034Z             {
2026-06-20T11:21:58.6576382Z               "path": "crates/spt-live/src/reconcile.rs",
2026-06-20T11:21:58.6576639Z               "line": 322
2026-06-20T11:21:58.6576874Z             },
2026-06-20T11:21:58.6577125Z             {
2026-06-20T11:21:58.6577470Z               "path": "crates/spt-live/src/reconcile.rs",
2026-06-20T11:21:58.6577727Z               "line": 360
2026-06-20T11:21:58.6577966Z             },
2026-06-20T11:21:58.6578200Z             {
2026-06-20T11:21:58.6578577Z               "path": "crates/spt-store/src/contextstore.rs",
2026-06-20T11:21:58.6578825Z               "line": 688
2026-06-20T11:21:58.6579131Z             },
2026-06-20T11:21:58.6579379Z             {
2026-06-20T11:21:58.6579722Z               "path": "crates/spt-store/src/syncmerge.rs",
2026-06-20T11:21:58.6579977Z               "line": 397
2026-06-20T11:21:58.6580211Z             },
2026-06-20T11:21:58.6580465Z             {
2026-06-20T11:21:58.6580803Z               "path": "crates/spt-store/src/syncmerge.rs",
2026-06-20T11:21:58.6581050Z               "line": 440
2026-06-20T11:21:58.6581280Z             }
2026-06-20T11:21:58.6581537Z           ]
2026-06-20T11:21:58.6581765Z         }
2026-06-20T11:21:58.6582000Z       }
2026-06-20T11:21:58.6582241Z     },
2026-06-20T11:21:58.6582472Z     {
2026-06-20T11:21:58.6582769Z       "id": "REQ-HAZARD-CONPTY-DSR",
2026-06-20T11:21:58.6583412Z       "title": "ConPTY reader must auto-answer DSR (ESC[6n) or all child output stalls (5.5)",
2026-06-20T11:21:58.6583689Z       "requiredStages": [
2026-06-20T11:21:58.6583932Z         "impl",
2026-06-20T11:21:58.6584171Z         "unit"
2026-06-20T11:21:58.6584418Z       ],
2026-06-20T11:21:58.6584670Z       "stages": {
2026-06-20T11:21:58.6584938Z         "doc": {
2026-06-20T11:21:58.6585204Z           "complete": false,
2026-06-20T11:21:58.6585469Z           "evidence": []
2026-06-20T11:21:58.6585711Z         },
2026-06-20T11:21:58.6585960Z         "impl": {
2026-06-20T11:21:58.6586232Z           "complete": true,
2026-06-20T11:21:58.6586485Z           "evidence": [
2026-06-20T11:21:58.6586728Z             {
2026-06-20T11:21:58.6587053Z               "path": "crates/spt-term/src/reader.rs",
2026-06-20T11:21:58.6587314Z               "line": 169
2026-06-20T11:21:58.6587699Z             }
2026-06-20T11:21:58.6587930Z           ]
2026-06-20T11:21:58.6588165Z         },
2026-06-20T11:21:58.6588422Z         "int": {
2026-06-20T11:21:58.6588680Z           "complete": true,
2026-06-20T11:21:58.6588931Z           "evidence": [
2026-06-20T11:21:58.6589242Z             {
2026-06-20T11:21:58.6589575Z               "path": "crates/spt-term/tests/dsr.rs",
2026-06-20T11:21:58.6589823Z               "line": 44
2026-06-20T11:21:58.6590066Z             },
2026-06-20T11:21:58.6590287Z             {
2026-06-20T11:21:58.6590619Z               "path": "crates/spt-term/tests/dsr.rs",
2026-06-20T11:21:58.6590866Z               "line": 66
2026-06-20T11:21:58.6591249Z             }
2026-06-20T11:21:58.6591496Z           ]
2026-06-20T11:21:58.6591734Z         },
2026-06-20T11:21:58.6591977Z         "unit": {
2026-06-20T11:21:58.6592245Z           "complete": true,
2026-06-20T11:21:58.6592493Z           "evidence": [
2026-06-20T11:21:58.6592720Z             {
2026-06-20T11:21:58.6593070Z               "path": "crates/spt-term/src/reader.rs",
2026-06-20T11:21:58.6593329Z               "line": 186
2026-06-20T11:21:58.6593563Z             },
2026-06-20T11:21:58.6593806Z             {
2026-06-20T11:21:58.6594126Z               "path": "crates/spt-term/src/reader.rs",
2026-06-20T11:21:58.6594377Z               "line": 238
2026-06-20T11:21:58.6594601Z             },
2026-06-20T11:21:58.6594835Z             {
2026-06-20T11:21:58.6595188Z               "path": "crates/spt-term/src/reader.rs",
2026-06-20T11:21:58.6595437Z               "line": 266
2026-06-20T11:21:58.6595673Z             }
2026-06-20T11:21:58.6595909Z           ]
2026-06-20T11:21:58.6596149Z         }
2026-06-20T11:21:58.6596382Z       }
2026-06-20T11:21:58.6596620Z     },
2026-06-20T11:21:58.6596858Z     {
2026-06-20T11:21:58.6597188Z       "id": "REQ-HAZARD-DAEMON-HOSTED-LIVENESS",
2026-06-20T11:21:58.6598462Z       "title": "Daemon-hosted perches (Psyche, spt-hosted Self) derive liveness from the daemon endpoint table + info.json status, never is_process_alive(info.pid) (2.5)",
2026-06-20T11:21:58.6598734Z       "requiredStages": [
2026-06-20T11:21:58.6599049Z         "impl",
2026-06-20T11:21:58.6599287Z         "unit",
2026-06-20T11:21:58.6599526Z         "int"
2026-06-20T11:21:58.6599768Z       ],
2026-06-20T11:21:58.6600012Z       "stages": {
2026-06-20T11:21:58.6600256Z         "doc": {
2026-06-20T11:21:58.6600518Z           "complete": false,
2026-06-20T11:21:58.6600775Z           "evidence": []
2026-06-20T11:21:58.6601021Z         },
2026-06-20T11:21:58.6601252Z         "impl": {
2026-06-20T11:21:58.6601514Z           "complete": true,
2026-06-20T11:21:58.6601766Z           "evidence": [
2026-06-20T11:21:58.6602003Z             {
2026-06-20T11:21:58.6602352Z               "path": "crates/spt-daemon/src/lifecycle.rs",
2026-06-20T11:21:58.6602604Z               "line": 178
2026-06-20T11:21:58.6602848Z             },
2026-06-20T11:21:58.6603088Z             {
2026-06-20T11:21:58.6603433Z               "path": "crates/spt-daemon/src/lifecycle.rs",
2026-06-20T11:21:58.6603684Z               "line": 226
2026-06-20T11:21:58.6603922Z             },
2026-06-20T11:21:58.6604161Z             {
2026-06-20T11:21:58.6604490Z               "path": "crates/spt-msg/src/deliver.rs",
2026-06-20T11:21:58.6604747Z               "line": 79
2026-06-20T11:21:58.6604986Z             },
2026-06-20T11:21:58.6605224Z             {
2026-06-20T11:21:58.6605543Z               "path": "crates/spt-msg/src/ring.rs",
2026-06-20T11:21:58.6605796Z               "line": 52
2026-06-20T11:21:58.6606035Z             },
2026-06-20T11:21:58.6606277Z             {
2026-06-20T11:21:58.6606594Z               "path": "crates/spt-store/src/info.rs",
2026-06-20T11:21:58.6606856Z               "line": 263
2026-06-20T11:21:58.6607099Z             },
2026-06-20T11:21:58.6607333Z             {
2026-06-20T11:21:58.6607685Z               "path": "crates/spt-store/src/liveness.rs",
2026-06-20T11:21:58.6607934Z               "line": 27
2026-06-20T11:21:58.6608183Z             },
2026-06-20T11:21:58.6608554Z             {
2026-06-20T11:21:58.6608895Z               "path": "crates/spt-store/src/liveness.rs",
2026-06-20T11:21:58.6609232Z               "line": 79
2026-06-20T11:21:58.6609471Z             },
2026-06-20T11:21:58.6609713Z             {
2026-06-20T11:21:58.6610052Z               "path": "crates/spt-store/src/liveness.rs",
2026-06-20T11:21:58.6610314Z               "line": 102
2026-06-20T11:21:58.6610557Z             },
2026-06-20T11:21:58.6610792Z             {
2026-06-20T11:21:58.6611140Z               "path": "crates/spt-store/src/registry.rs",
2026-06-20T11:21:58.6611384Z               "line": 116
2026-06-20T11:21:58.6611629Z             }
2026-06-20T11:21:58.6611977Z           ]
2026-06-20T11:21:58.6612220Z         },
2026-06-20T11:21:58.6617382Z         "int": {
2026-06-20T11:21:58.6617711Z           "complete": true,
2026-06-20T11:21:58.6617978Z           "evidence": [
2026-06-20T11:21:58.6618217Z             {
2026-06-20T11:21:58.6618598Z               "path": "crates/spt-daemon/tests/daemon_e2e.rs",
2026-06-20T11:21:58.6618865Z               "line": 43
2026-06-20T11:21:58.6619185Z             }
2026-06-20T11:21:58.6619427Z           ]
2026-06-20T11:21:58.6619668Z         },
2026-06-20T11:21:58.6619906Z         "unit": {
2026-06-20T11:21:58.6620165Z           "complete": true,
2026-06-20T11:21:58.6620427Z           "evidence": [
2026-06-20T11:21:58.6620666Z             {
2026-06-20T11:21:58.6621028Z               "path": "crates/spt-daemon/src/lifecycle.rs",
2026-06-20T11:21:58.6621290Z               "line": 678
2026-06-20T11:21:58.6621523Z             },
2026-06-20T11:21:58.6621771Z             {
2026-06-20T11:21:58.6622099Z               "path": "crates/spt-store/src/info.rs",
2026-06-20T11:21:58.6622352Z               "line": 495
2026-06-20T11:21:58.6622581Z             },
2026-06-20T11:21:58.6622818Z             {
2026-06-20T11:21:58.6623167Z               "path": "crates/spt-store/src/liveness.rs",
2026-06-20T11:21:58.6623420Z               "line": 124
2026-06-20T11:21:58.6623663Z             },
2026-06-20T11:21:58.6623897Z             {
2026-06-20T11:21:58.6624236Z               "path": "crates/spt-store/src/liveness.rs",
2026-06-20T11:21:58.6624496Z               "line": 143
2026-06-20T11:21:58.6624723Z             },
2026-06-20T11:21:58.6624962Z             {
2026-06-20T11:21:58.6625300Z               "path": "crates/spt-store/src/liveness.rs",
2026-06-20T11:21:58.6625567Z               "line": 160
2026-06-20T11:21:58.6625801Z             },
2026-06-20T11:21:58.6626029Z             {
2026-06-20T11:21:58.6626392Z               "path": "crates/spt-store/src/liveness.rs",
2026-06-20T11:21:58.6626644Z               "line": 187
2026-06-20T11:21:58.6626892Z             },
2026-06-20T11:21:58.6627123Z             {
2026-06-20T11:21:58.6627468Z               "path": "crates/spt-store/src/liveness.rs",
2026-06-20T11:21:58.6627724Z               "line": 206
2026-06-20T11:21:58.6627961Z             },
2026-06-20T11:21:58.6628204Z             {
2026-06-20T11:21:58.6628543Z               "path": "crates/spt-store/src/registry.rs",
2026-06-20T11:21:58.6628806Z               "line": 229
2026-06-20T11:21:58.6629096Z             }
2026-06-20T11:21:58.6629341Z           ]
2026-06-20T11:21:58.6629579Z         }
2026-06-20T11:21:58.6629821Z       }
2026-06-20T11:21:58.6630057Z     },
2026-06-20T11:21:58.6630286Z     {
2026-06-20T11:21:58.6630634Z       "id": "REQ-HAZARD-DAEMON-SCHED-NONBLOCKING",
2026-06-20T11:21:58.6632617Z       "title": "Per-agent pulse/psyche/echo-commune scheduling must not serialize across agents: each agent's bounded LLM call (echo-commune summarizer, Psyche turn) runs off the shared scheduler so one slow/hung call cannot stall another agent's tick (7.4)",
2026-06-20T11:21:58.6632889Z       "requiredStages": [
2026-06-20T11:21:58.6633126Z         "impl",
2026-06-20T11:21:58.6633364Z         "unit"
2026-06-20T11:21:58.6633604Z       ],
2026-06-20T11:21:58.6633842Z       "stages": {
2026-06-20T11:21:58.6634090Z         "doc": {
2026-06-20T11:21:58.6634351Z           "complete": false,
2026-06-20T11:21:58.6634787Z           "evidence": []
2026-06-20T11:21:58.6635022Z         },
2026-06-20T11:21:58.6635268Z         "impl": {
2026-06-20T11:21:58.6635536Z           "complete": true,
2026-06-20T11:21:58.6635784Z           "evidence": [
2026-06-20T11:21:58.6636027Z             {
2026-06-20T11:21:58.6636376Z               "path": "crates/spt-daemon/src/broker.rs",
2026-06-20T11:21:58.6636632Z               "line": 1136
2026-06-20T11:21:58.6636870Z             },
2026-06-20T11:21:58.6637113Z             {
2026-06-20T11:21:58.6637452Z               "path": "crates/spt-daemon/src/broker.rs",
2026-06-20T11:21:58.6637702Z               "line": 1362
2026-06-20T11:21:58.6638065Z             }
2026-06-20T11:21:58.6638298Z           ]
2026-06-20T11:21:58.6638536Z         },
2026-06-20T11:21:58.6638774Z         "int": {
2026-06-20T11:21:58.6639108Z           "complete": false,
2026-06-20T11:21:58.6639366Z           "evidence": []
2026-06-20T11:21:58.6639605Z         },
2026-06-20T11:21:58.6639868Z         "unit": {
2026-06-20T11:21:58.6640134Z           "complete": true,
2026-06-20T11:21:58.6640414Z           "evidence": [
2026-06-20T11:21:58.6640645Z             {
2026-06-20T11:21:58.6641003Z               "path": "crates/spt-daemon/tests/shellchan.rs",
2026-06-20T11:21:58.6641256Z               "line": 161
2026-06-20T11:21:58.6641490Z             }
2026-06-20T11:21:58.6641727Z           ]
2026-06-20T11:21:58.6641957Z         }
2026-06-20T11:21:58.6642195Z       }
2026-06-20T11:21:58.6642425Z     },
2026-06-20T11:21:58.6642667Z     {
2026-06-20T11:21:58.6642991Z       "id": "REQ-HAZARD-DAEMON-STOP-BARRIER",
2026-06-20T11:21:58.6647951Z       "title": "B3: `spt daemon stop` then an immediate `spt daemon start` does NOT race — stop fully completes before it returns. Today request_stop (seedmap.rs:240-255) returns on the KIND_STOPPING ack (sent seedmap.rs:174-176) BEFORE the seed socket unbinds, so a following is_running ping (daemon.rs:375) wins the exit window and start reports ALREADY_RUNNING (operator: daemon stop → STOPPED then start → ALREADY_RUNNING). FIX: unbind/stop-gate the seed socket BEFORE acking KIND_STOPPING, OR request_stop waits for a ping-to-fail before returning. Unit: stop then immediate is_running()==false. (v0.12.0)",
2026-06-20T11:21:58.6648248Z       "requiredStages": [
2026-06-20T11:21:58.6648488Z         "impl",
2026-06-20T11:21:58.6648729Z         "unit"
2026-06-20T11:21:58.6649053Z       ],
2026-06-20T11:21:58.6649288Z       "stages": {
2026-06-20T11:21:58.6649536Z         "doc": {
2026-06-20T11:21:58.6649788Z           "complete": false,
2026-06-20T11:21:58.6650036Z           "evidence": []
2026-06-20T11:21:58.6650274Z         },
2026-06-20T11:21:58.6650536Z         "impl": {
2026-06-20T11:21:58.6650800Z           "complete": true,
2026-06-20T11:21:58.6651046Z           "evidence": [
2026-06-20T11:21:58.6651267Z             {
2026-06-20T11:21:58.6651610Z               "path": "crates/spt-daemon/src/seedmap.rs",
2026-06-20T11:21:58.6651854Z               "line": 257
2026-06-20T11:21:58.6652121Z             }
2026-06-20T11:21:58.6652355Z           ]
2026-06-20T11:21:58.6652588Z         },
2026-06-20T11:21:58.6652827Z         "int": {
2026-06-20T11:21:58.6653088Z           "complete": false,
2026-06-20T11:21:58.6653343Z           "evidence": []
2026-06-20T11:21:58.6653576Z         },
2026-06-20T11:21:58.6653822Z         "unit": {
2026-06-20T11:21:58.6654080Z           "complete": true,
2026-06-20T11:21:58.6654333Z           "evidence": [
2026-06-20T11:21:58.6654566Z             {
2026-06-20T11:21:58.6654925Z               "path": "crates/spt-daemon/src/seedmap.rs",
2026-06-20T11:21:58.6655176Z               "line": 360
2026-06-20T11:21:58.6655410Z             }
2026-06-20T11:21:58.6655635Z           ]
2026-06-20T11:21:58.6655864Z         }
2026-06-20T11:21:58.6656100Z       }
2026-06-20T11:21:58.6656327Z     },
2026-06-20T11:21:58.6656561Z     {
2026-06-20T11:21:58.6656871Z       "id": "REQ-HAZARD-DAEMON-STOP-REAP",
2026-06-20T11:21:58.6661956Z       "title": "Breap: `spt daemon stop` REAPS the spt-hosted children it spawned — no orphaned psyche/harness processes. Today a stop leaves ~8 orphaned claude-spt-psyche.exe + spt.exe: Psyches are spawned DETACHED (runtime.rs:342-356, the Child is dropped — 'Detached' ~349) and the livehost stop flag Arc<AtomicBool> is NEVER raised (brainproc.rs:227-230 holds it 'for symmetry'). FIX: on stop, raise the livehost stop flag AND kill the spawned psyche/spt-hosted children — via a Windows job object / Unix process-group so the children die with the daemon (not detached-immortal). Folds with B3 (both the stop path). (v0.12.0)",
2026-06-20T11:21:58.6662348Z       "requiredStages": [
2026-06-20T11:21:58.6662591Z         "impl",
2026-06-20T11:21:58.6662991Z         "unit"
2026-06-20T11:21:58.6663230Z       ],
2026-06-20T11:21:58.6663473Z       "stages": {
2026-06-20T11:21:58.6663716Z         "doc": {
2026-06-20T11:21:58.6663982Z           "complete": false,
2026-06-20T11:21:58.6664237Z           "evidence": []
2026-06-20T11:21:58.6664473Z         },
2026-06-20T11:21:58.6664744Z         "impl": {
2026-06-20T11:21:58.6665006Z           "complete": true,
2026-06-20T11:21:58.6665255Z           "evidence": [
2026-06-20T11:21:58.6665494Z             {
2026-06-20T11:21:58.6665847Z               "path": "crates/spt-daemon/src/brainproc.rs",
2026-06-20T11:21:58.6666105Z               "line": 1018
2026-06-20T11:21:58.6666337Z             },
2026-06-20T11:21:58.6666585Z             {
2026-06-20T11:21:58.6666935Z               "path": "crates/spt-daemon/src/daemon.rs",
2026-06-20T11:21:58.6667188Z               "line": 283
2026-06-20T11:21:58.6667431Z             },
2026-06-20T11:21:58.6667664Z             {
2026-06-20T11:21:58.6668013Z               "path": "crates/spt-daemon/src/daemon.rs",
2026-06-20T11:21:58.6668265Z               "line": 316
2026-06-20T11:21:58.6668508Z             },
2026-06-20T11:21:58.6668747Z             {
2026-06-20T11:21:58.6669151Z               "path": "crates/spt-daemon/src/reap.rs",
2026-06-20T11:21:58.6669405Z               "line": 26
2026-06-20T11:21:58.6669647Z             }
2026-06-20T11:21:58.6669882Z           ]
2026-06-20T11:21:58.6670112Z         },
2026-06-20T11:21:58.6670346Z         "int": {
2026-06-20T11:21:58.6670618Z           "complete": false,
2026-06-20T11:21:58.6670870Z           "evidence": []
2026-06-20T11:21:58.6671108Z         },
2026-06-20T11:21:58.6671342Z         "unit": {
2026-06-20T11:21:58.6671610Z           "complete": true,
2026-06-20T11:21:58.6671863Z           "evidence": [
2026-06-20T11:21:58.6672104Z             {
2026-06-20T11:21:58.6672430Z               "path": "crates/spt-daemon/src/reap.rs",
2026-06-20T11:21:58.6672683Z               "line": 271
2026-06-20T11:21:58.6672926Z             },
2026-06-20T11:21:58.6673161Z             {
2026-06-20T11:21:58.6673495Z               "path": "crates/spt-daemon/src/reap.rs",
2026-06-20T11:21:58.6673756Z               "line": 348
2026-06-20T11:21:58.6673989Z             }
2026-06-20T11:21:58.6674233Z           ]
2026-06-20T11:21:58.6674468Z         }
2026-06-20T11:21:58.6674730Z       }
2026-06-20T11:21:58.6674985Z     },
2026-06-20T11:21:58.6675210Z     {
2026-06-20T11:21:58.6675511Z       "id": "REQ-HAZARD-DEFERRED-DRAIN",
2026-06-20T11:21:58.6676064Z       "title": "Deferred spool rows excluded from the event-stream drain (1.4)",
2026-06-20T11:21:58.6676335Z       "requiredStages": [
2026-06-20T11:21:58.6676578Z         "impl",
2026-06-20T11:21:58.6676821Z         "unit"
2026-06-20T11:21:58.6677051Z       ],
2026-06-20T11:21:58.6677292Z       "stages": {
2026-06-20T11:21:58.6677533Z         "doc": {
2026-06-20T11:21:58.6677805Z           "complete": false,
2026-06-20T11:21:58.6678068Z           "evidence": []
2026-06-20T11:21:58.6678297Z         },
2026-06-20T11:21:58.6678539Z         "impl": {
2026-06-20T11:21:58.6678791Z           "complete": true,
2026-06-20T11:21:58.6679106Z           "evidence": [
2026-06-20T11:21:58.6679330Z             {
2026-06-20T11:21:58.6679664Z               "path": "crates/spt-store/src/spool.rs",
2026-06-20T11:21:58.6679913Z               "line": 40
2026-06-20T11:21:58.6680273Z             },
2026-06-20T11:21:58.6680515Z             {
2026-06-20T11:21:58.6680840Z               "path": "crates/spt-store/src/spool.rs",
2026-06-20T11:21:58.6681101Z               "line": 103
2026-06-20T11:21:58.6681339Z             },
2026-06-20T11:21:58.6681573Z             {
2026-06-20T11:21:58.6681893Z               "path": "crates/spt-store/src/spool.rs",
2026-06-20T11:21:58.6682146Z               "line": 218
2026-06-20T11:21:58.6682384Z             },
2026-06-20T11:21:58.6682621Z             {
2026-06-20T11:21:58.6682947Z               "path": "crates/spt-store/src/spool.rs",
2026-06-20T11:21:58.6683206Z               "line": 323
2026-06-20T11:21:58.6683558Z             }
2026-06-20T11:21:58.6683792Z           ]
2026-06-20T11:21:58.6684031Z         },
2026-06-20T11:21:58.6684297Z         "int": {
2026-06-20T11:21:58.6684564Z           "complete": false,
2026-06-20T11:21:58.6684821Z           "evidence": []
2026-06-20T11:21:58.6685052Z         },
2026-06-20T11:21:58.6685295Z         "unit": {
2026-06-20T11:21:58.6685555Z           "complete": true,
2026-06-20T11:21:58.6685789Z           "evidence": [
2026-06-20T11:21:58.6686027Z             {
2026-06-20T11:21:58.6686356Z               "path": "crates/spt-store/src/spool.rs",
2026-06-20T11:21:58.6686600Z               "line": 361
2026-06-20T11:21:58.6686847Z             },
2026-06-20T11:21:58.6687081Z             {
2026-06-20T11:21:58.6687410Z               "path": "crates/spt-store/src/spool.rs",
2026-06-20T11:21:58.6687658Z               "line": 433
2026-06-20T11:21:58.6687895Z             },
2026-06-20T11:21:58.6688126Z             {
2026-06-20T11:21:58.6688470Z               "path": "crates/spt-store/src/spool.rs",
2026-06-20T11:21:58.6688732Z               "line": 496
2026-06-20T11:21:58.6689032Z             },
2026-06-20T11:21:58.6689276Z             {
2026-06-20T11:21:58.6689595Z               "path": "crates/spt-store/src/spool.rs",
2026-06-20T11:21:58.6689839Z               "line": 517
2026-06-20T11:21:58.6690078Z             }
2026-06-20T11:21:58.6690315Z           ]
2026-06-20T11:21:58.6690548Z         }
2026-06-20T11:21:58.6690772Z       }
2026-06-20T11:21:58.6691007Z     },
2026-06-20T11:21:58.6691237Z     {
2026-06-20T11:21:58.6691542Z       "id": "REQ-HAZARD-DEFERRED-MANIFEST",
2026-06-20T11:21:58.6698317Z       "title": "A pointer-mode (delegated / GhReleaseManaged) adapter whose binary/manifest is not yet extracted is reported with a CLEAR diagnostic, never silently dropped. Today such an adapter reads its manifest LIVE from source_dir (registry.rs manifest_dir ~146/149); a deferred / un-extracted install makes load_manifest fail → registered() (~410, filter_map(.ok())) SILENTLY DROPS the row → downstream ADAPTER_UNRESOLVED + a cryptic os-error-2 on `spt adapter use`. FIX: surface a clear diagnostic at the resolver + at `adapter use` (name the adapter + the deferred/missing-manifest cause + the fix), not a silent filter-drop and not a bare os-error-2; consider an eager manifest copy at register time so host_binaries survive before the binary download completes. doyle Finding A. (post-v0.10.0)",
2026-06-20T11:21:58.6698620Z       "requiredStages": [
2026-06-20T11:21:58.6698864Z         "impl",
2026-06-20T11:21:58.6699183Z         "unit"
2026-06-20T11:21:58.6699432Z       ],
2026-06-20T11:21:58.6699679Z       "stages": {
2026-06-20T11:21:58.6699921Z         "doc": {
2026-06-20T11:21:58.6700189Z           "complete": false,
2026-06-20T11:21:58.6700446Z           "evidence": []
2026-06-20T11:21:58.6700691Z         },
2026-06-20T11:21:58.6700943Z         "impl": {
2026-06-20T11:21:58.6701208Z           "complete": true,
2026-06-20T11:21:58.6701468Z           "evidence": [
2026-06-20T11:21:58.6701721Z             {
2026-06-20T11:21:58.6702088Z               "path": "crates/spt-runtime/src/registry.rs",
2026-06-20T11:21:58.6702341Z               "line": 402
2026-06-20T11:21:58.6702570Z             },
2026-06-20T11:21:58.6702803Z             {
2026-06-20T11:21:58.6703175Z               "path": "crates/spt-runtime/src/registry.rs",
2026-06-20T11:21:58.6703633Z               "line": 446
2026-06-20T11:21:58.6703865Z             }
2026-06-20T11:21:58.6704105Z           ]
2026-06-20T11:21:58.6704340Z         },
2026-06-20T11:21:58.6704589Z         "int": {
2026-06-20T11:21:58.6704851Z           "complete": false,
2026-06-20T11:21:58.6705117Z           "evidence": []
2026-06-20T11:21:58.6705355Z         },
2026-06-20T11:21:58.6705589Z         "unit": {
2026-06-20T11:21:58.6705852Z           "complete": true,
2026-06-20T11:21:58.6706105Z           "evidence": [
2026-06-20T11:21:58.6706347Z             {
2026-06-20T11:21:58.6706699Z               "path": "crates/spt-runtime/src/registry.rs",
2026-06-20T11:21:58.6707067Z               "line": 910
2026-06-20T11:21:58.6707309Z             }
2026-06-20T11:21:58.6707544Z           ]
2026-06-20T11:21:58.6707782Z         }
2026-06-20T11:21:58.6708011Z       }
2026-06-20T11:21:58.6708244Z     },
2026-06-20T11:21:58.6708464Z     {
2026-06-20T11:21:58.6708802Z       "id": "REQ-HAZARD-DEFERRED-SURVIVE-DRAIN",
2026-06-20T11:21:58.6709242Z       "title": "Deferred rows survive poll drain (4.4)",
2026-06-20T11:21:58.6709499Z       "requiredStages": [
2026-06-20T11:21:58.6709733Z         "impl",
2026-06-20T11:21:58.6709968Z         "unit"
2026-06-20T11:21:58.6710210Z       ],
2026-06-20T11:21:58.6710453Z       "stages": {
2026-06-20T11:21:58.6710692Z         "doc": {
2026-06-20T11:21:58.6710960Z           "complete": false,
2026-06-20T11:21:58.6711217Z           "evidence": []
2026-06-20T11:21:58.6711459Z         },
2026-06-20T11:21:58.6711692Z         "impl": {
2026-06-20T11:21:58.6711944Z           "complete": true,
2026-06-20T11:21:58.6712200Z           "evidence": [
2026-06-20T11:21:58.6712447Z             {
2026-06-20T11:21:58.6712786Z               "path": "crates/spt-store/src/spool.rs",
2026-06-20T11:21:58.6713029Z               "line": 116
2026-06-20T11:21:58.6713268Z             },
2026-06-20T11:21:58.6713503Z             {
2026-06-20T11:21:58.6713841Z               "path": "crates/spt-store/src/spool.rs",
2026-06-20T11:21:58.6714103Z               "line": 211
2026-06-20T11:21:58.6714339Z             }
2026-06-20T11:21:58.6714580Z           ]
2026-06-20T11:21:58.6714810Z         },
2026-06-20T11:21:58.6715043Z         "int": {
2026-06-20T11:21:58.6715305Z           "complete": false,
2026-06-20T11:21:58.6715567Z           "evidence": []
2026-06-20T11:21:58.6715801Z         },
2026-06-20T11:21:58.6716046Z         "unit": {
2026-06-20T11:21:58.6716312Z           "complete": true,
2026-06-20T11:21:58.6716559Z           "evidence": [
2026-06-20T11:21:58.6716797Z             {
2026-06-20T11:21:58.6717121Z               "path": "crates/spt-store/src/spool.rs",
2026-06-20T11:21:58.6717389Z               "line": 388
2026-06-20T11:21:58.6717622Z             },
2026-06-20T11:21:58.6717859Z             {
2026-06-20T11:21:58.6718184Z               "path": "crates/spt-store/src/spool.rs",
2026-06-20T11:21:58.6718423Z               "line": 469
2026-06-20T11:21:58.6718657Z             }
2026-06-20T11:21:58.6718881Z           ]
2026-06-20T11:21:58.6719196Z         }
2026-06-20T11:21:58.6719423Z       }
2026-06-20T11:21:58.6719656Z     },
2026-06-20T11:21:58.6719897Z     {
2026-06-20T11:21:58.6720247Z       "id": "REQ-HAZARD-DETACHED-PIPE-INHERIT",
2026-06-20T11:21:58.6723313Z       "title": "Windows detached long-lived children must not inherit a captured caller's pipe: every detach-spawn of an immortal child (daemon, shell binary) runs bInheritHandles=FALSE, or a caller capturing output anywhere up the process chain hangs forever on a pipe that never EOFs — std-handle flag stripping is NOT sufficient (grandparent strays still flow) (5.6)",
2026-06-20T11:21:58.6723594Z       "requiredStages": [
2026-06-20T11:21:58.6723842Z         "impl",
2026-06-20T11:21:58.6724091Z         "unit"
2026-06-20T11:21:58.6724325Z       ],
2026-06-20T11:21:58.6724567Z       "stages": {
2026-06-20T11:21:58.6724805Z         "doc": {
2026-06-20T11:21:58.6725076Z           "complete": true,
2026-06-20T11:21:58.6725322Z           "evidence": [
2026-06-20T11:21:58.6725685Z             {
2026-06-20T11:21:58.6726000Z               "path": "docs/KNOWN-HAZARDS.md",
2026-06-20T11:21:58.6726243Z               "line": 206
2026-06-20T11:21:58.6726490Z             }
2026-06-20T11:21:58.6726724Z           ]
2026-06-20T11:21:58.6726963Z         },
2026-06-20T11:21:58.6727206Z         "impl": {
2026-06-20T11:21:58.6727468Z           "complete": true,
2026-06-20T11:21:58.6727729Z           "evidence": [
2026-06-20T11:21:58.6727964Z             {
2026-06-20T11:21:58.6728306Z               "path": "crates/spt-daemon/src/daemon.rs",
2026-06-20T11:21:58.6728554Z               "line": 691
2026-06-20T11:21:58.6728907Z             },
2026-06-20T11:21:58.6729241Z             {
2026-06-20T11:21:58.6729593Z               "path": "crates/spt-daemon/src/daemon.rs",
2026-06-20T11:21:58.6729851Z               "line": 791
2026-06-20T11:21:58.6730088Z             },
2026-06-20T11:21:58.6730329Z             {
2026-06-20T11:21:58.6730676Z               "path": "crates/spt-daemon/src/daemon.rs",
2026-06-20T11:21:58.6730930Z               "line": 1120
2026-06-20T11:21:58.6731169Z             },
2026-06-20T11:21:58.6731412Z             {
2026-06-20T11:21:58.6731770Z               "path": "crates/spt-daemon/src/shellhost.rs",
2026-06-20T11:21:58.6732023Z               "line": 184
2026-06-20T11:21:58.6732264Z             }
2026-06-20T11:21:58.6732503Z           ]
2026-06-20T11:21:58.6732743Z         },
2026-06-20T11:21:58.6732984Z         "int": {
2026-06-20T11:21:58.6733248Z           "complete": false,
2026-06-20T11:21:58.6733505Z           "evidence": []
2026-06-20T11:21:58.6733730Z         },
2026-06-20T11:21:58.6733984Z         "unit": {
2026-06-20T11:21:58.6734245Z           "complete": true,
2026-06-20T11:21:58.6734493Z           "evidence": [
2026-06-20T11:21:58.6734731Z             {
2026-06-20T11:21:58.6735074Z               "path": "crates/spt-daemon/src/daemon.rs",
2026-06-20T11:21:58.6735319Z               "line": 1169
2026-06-20T11:21:58.6735555Z             },
2026-06-20T11:21:58.6735805Z             {
2026-06-20T11:21:58.6736163Z               "path": "crates/spt/tests/notify_shell_e2e.rs",
2026-06-20T11:21:58.6736420Z               "line": 44
2026-06-20T11:21:58.6736660Z             },
2026-06-20T11:21:58.6736894Z             {
2026-06-20T11:21:58.6737260Z               "path": "crates/spt/tests/shell_actgate_e2e.rs",
2026-06-20T11:21:58.6737514Z               "line": 52
2026-06-20T11:21:58.6737757Z             },
2026-06-20T11:21:58.6737985Z             {
2026-06-20T11:21:58.6738313Z               "path": "crates/spt/tests/shell_e2e.rs",
2026-06-20T11:21:58.6738561Z               "line": 57
2026-06-20T11:21:58.6738804Z             },
2026-06-20T11:21:58.6739115Z             {
2026-06-20T11:21:58.6739496Z               "path": "crates/spt/tests/shell_sleepwake_e2e.rs",
2026-06-20T11:21:58.6739744Z               "line": 54
2026-06-20T11:21:58.6739977Z             }
2026-06-20T11:21:58.6740220Z           ]
2026-06-20T11:21:58.6740463Z         }
2026-06-20T11:21:58.6740701Z       }
2026-06-20T11:21:58.6740927Z     },
2026-06-20T11:21:58.6741147Z     {
2026-06-20T11:21:58.6741485Z       "id": "REQ-HAZARD-DIRECT-WRITE-PRECEDENCE",
2026-06-20T11:21:58.6742119Z       "title": "Direct-write precedence marker (with node id) guards stale overwrite (6.5)",
2026-06-20T11:21:58.6742396Z       "requiredStages": [
2026-06-20T11:21:58.6742635Z         "impl",
2026-06-20T11:21:58.6742864Z         "unit"
2026-06-20T11:21:58.6743107Z       ],
2026-06-20T11:21:58.6743345Z       "stages": {
2026-06-20T11:21:58.6743587Z         "doc": {
2026-06-20T11:21:58.6743847Z           "complete": false,
2026-06-20T11:21:58.6744108Z           "evidence": []
2026-06-20T11:21:58.6744348Z         },
2026-06-20T11:21:58.6744591Z         "impl": {
2026-06-20T11:21:58.6744858Z           "complete": true,
2026-06-20T11:21:58.6745106Z           "evidence": [
2026-06-20T11:21:58.6745325Z             {
2026-06-20T11:21:58.6745659Z               "path": "crates/spt-live/src/context.rs",
2026-06-20T11:21:58.6746053Z               "line": 26
2026-06-20T11:21:58.6746294Z             },
2026-06-20T11:21:58.6746529Z             {
2026-06-20T11:21:58.6746872Z               "path": "crates/spt-live/src/context.rs",
2026-06-20T11:21:58.6747129Z               "line": 135
2026-06-20T11:21:58.6747373Z             },
2026-06-20T11:21:58.6747610Z             {
2026-06-20T11:21:58.6747973Z               "path": "crates/spt-store/src/contextmark.rs",
2026-06-20T11:21:58.6748225Z               "line": 26
2026-06-20T11:21:58.6748464Z             },
2026-06-20T11:21:58.6748699Z             {
2026-06-20T11:21:58.6749131Z               "path": "crates/spt-store/src/contextmark.rs",
2026-06-20T11:21:58.6749540Z               "line": 237
2026-06-20T11:21:58.6749775Z             }
2026-06-20T11:21:58.6750022Z           ]
2026-06-20T11:21:58.6750256Z         },
2026-06-20T11:21:58.6750499Z         "int": {
2026-06-20T11:21:58.6750770Z           "complete": false,
2026-06-20T11:21:58.6751023Z           "evidence": []
2026-06-20T11:21:58.6751261Z         },
2026-06-20T11:21:58.6751506Z         "unit": {
2026-06-20T11:21:58.6751764Z           "complete": true,
2026-06-20T11:21:58.6752002Z           "evidence": [
2026-06-20T11:21:58.6752222Z             {
2026-06-20T11:21:58.6752556Z               "path": "crates/spt-live/src/context.rs",
2026-06-20T11:21:58.6752799Z               "line": 161
2026-06-20T11:21:58.6753042Z             },
2026-06-20T11:21:58.6753280Z             {
2026-06-20T11:21:58.6753609Z               "path": "crates/spt-live/src/context.rs",
2026-06-20T11:21:58.6753872Z               "line": 170
2026-06-20T11:21:58.6754099Z             },
2026-06-20T11:21:58.6754330Z             {
2026-06-20T11:21:58.6754673Z               "path": "crates/spt-live/src/context.rs",
2026-06-20T11:21:58.6754941Z               "line": 179
2026-06-20T11:21:58.6755175Z             },
2026-06-20T11:21:58.6755404Z             {
2026-06-20T11:21:58.6755738Z               "path": "crates/spt-live/src/context.rs",
2026-06-20T11:21:58.6755995Z               "line": 190
2026-06-20T11:21:58.6756243Z             },
2026-06-20T11:21:58.6756481Z             {
2026-06-20T11:21:58.6756807Z               "path": "crates/spt-live/src/context.rs",
2026-06-20T11:21:58.6757065Z               "line": 199
2026-06-20T11:21:58.6757308Z             },
2026-06-20T11:21:58.6757545Z             {
2026-06-20T11:21:58.6757869Z               "path": "crates/spt-live/src/context.rs",
2026-06-20T11:21:58.6758119Z               "line": 216
2026-06-20T11:21:58.6758347Z             },
2026-06-20T11:21:58.6758582Z             {
2026-06-20T11:21:58.6758911Z               "path": "crates/spt-live/src/context.rs",
2026-06-20T11:21:58.6759240Z               "line": 242
2026-06-20T11:21:58.6759485Z             },
2026-06-20T11:21:58.6759710Z             {
2026-06-20T11:21:58.6760039Z               "path": "crates/spt-live/src/ingest.rs",
2026-06-20T11:21:58.6760291Z               "line": 295
2026-06-20T11:21:58.6760535Z             },
2026-06-20T11:21:58.6760773Z             {
2026-06-20T11:21:58.6761107Z               "path": "crates/spt-live/src/signoff.rs",
2026-06-20T11:21:58.6761359Z               "line": 244
2026-06-20T11:21:58.6761593Z             },
2026-06-20T11:21:58.6761835Z             {
2026-06-20T11:21:58.6762182Z               "path": "crates/spt-store/src/contextmark.rs",
2026-06-20T11:21:58.6762434Z               "line": 265
2026-06-20T11:21:58.6762676Z             },
2026-06-20T11:21:58.6762906Z             {
2026-06-20T11:21:58.6763258Z               "path": "crates/spt-store/src/contextmark.rs",
2026-06-20T11:21:58.6763511Z               "line": 293
2026-06-20T11:21:58.6763751Z             },
2026-06-20T11:21:58.6763974Z             {
2026-06-20T11:21:58.6764342Z               "path": "crates/spt-store/src/contextmark.rs",
2026-06-20T11:21:58.6764592Z               "line": 317
2026-06-20T11:21:58.6764834Z             },
2026-06-20T11:21:58.6765073Z             {
2026-06-20T11:21:58.6765430Z               "path": "crates/spt-store/src/contextmark.rs",
2026-06-20T11:21:58.6765801Z               "line": 327
2026-06-20T11:21:58.6766035Z             },
2026-06-20T11:21:58.6766275Z             {
2026-06-20T11:21:58.6766632Z               "path": "crates/spt-store/src/syncmerge.rs",
2026-06-20T11:21:58.6766885Z               "line": 540
2026-06-20T11:21:58.6767121Z             }
2026-06-20T11:21:58.6767349Z           ]
2026-06-20T11:21:58.6767591Z         }
2026-06-20T11:21:58.6767825Z       }
2026-06-20T11:21:58.6768058Z     },
2026-06-20T11:21:58.6768302Z     {
2026-06-20T11:21:58.6768664Z       "id": "REQ-HAZARD-DRIVEN-BY-IDLE-REMOTE-EVICT",
2026-06-20T11:21:58.6782155Z       "title": "An spt-hosted endpoint driven by a REMOTE controller whose remote is gone but whose broker connection stays OPEN (a wedged/lost pump that never delivers the detach) AND whose session is IDLE (no output) stays latched ONLINE+CONTROLLED forever: the W1 drain-evict only fires on OUTPUT (CONTROLLER_WRITE_DEADLINE on a backed-up write), a clean disconnect self-heals via detach_if→clear_controller, but an idle session with a half-open/wedged controller connection produces neither signal. PROVED repro-first on a real broker (v0.13.0 W5, inject_control_wedge.rs w5_a2): controller_by STAYS Some(origin) and driven_by STAYS Some after the remote is abandoned without a clean EOF on an idle session — so the brain reconcile CANNOT detect it from KIND_SESSIONS controller_by (the broker still reports it controlled). FIX DIRECTION (doyle ruling 2026-06-19, broker-side single-writer — the broker owns driven_by/clear_controller): wire the EXISTING D4c NetPresence connection-disconnect event → clear_controller for any session whose controller identity == the dead origin (become_controller already stores Some(origin); presence events already exist — modest wiring, NOT a new probe). The liveness ORACLE is QUIC's own keepalive/idle-timeout: a presence-disconnect IS a real QUIC conn close, already tolerant of transient blips within the keepalive window, so NO heavy partition ADR is needed UNLESS the QUIC timeout proves too slow for the UX (then mint an ADR for a faster controller-heartbeat + its false-evict bound). Composes with W1 (output path) + W5 Gap B (no-session) — this is the third, idle-remote, leg. (v0.13.0 follow-up)",
2026-06-20T11:21:58.6782666Z       "requiredStages": [],
2026-06-20T11:21:58.6782917Z       "stages": {
2026-06-20T11:21:58.6783167Z         "doc": {
2026-06-20T11:21:58.6783449Z           "complete": false,
2026-06-20T11:21:58.6783712Z           "evidence": []
2026-06-20T11:21:58.6783950Z         },
2026-06-20T11:21:58.6784184Z         "impl": {
2026-06-20T11:21:58.6784450Z           "complete": false,
2026-06-20T11:21:58.6784712Z           "evidence": []
2026-06-20T11:21:58.6784974Z         },
2026-06-20T11:21:58.6785224Z         "int": {
2026-06-20T11:21:58.6785491Z           "complete": false,
2026-06-20T11:21:58.6785741Z           "evidence": []
2026-06-20T11:21:58.6785987Z         },
2026-06-20T11:21:58.6786241Z         "unit": {
2026-06-20T11:21:58.6786503Z           "complete": false,
2026-06-20T11:21:58.6786789Z           "evidence": []
2026-06-20T11:21:58.6787027Z         }
2026-06-20T11:21:58.6787255Z       }
2026-06-20T11:21:58.6787480Z     },
2026-06-20T11:21:58.6787710Z     {
2026-06-20T11:21:58.6788029Z       "id": "REQ-HAZARD-DRIVEN-BY-SELFHEAL",
2026-06-20T11:21:58.6792415Z       "title": "An spt-hosted endpoint's ONLINE+CONTROLLED state (`driven_by`) must CLEAR even when the detach IPC is lost — do NOT rely on the detach signal (same lesson as REQ-HAZARD-HOSTED-LIVENESS-RECONCILE B2): the reconcile loop clears `driven_by` when the endpoint has no live controller/session. Today a wedged or lost pump never delivers the detach, so the endpoint stays latched CONTROLLED forever. Composes with W1 (the wedge no longer blocks the detach) and rides the same pull-primary reconcile substrate as B2. (v0.13.0)",
2026-06-20T11:21:58.6792687Z       "requiredStages": [
2026-06-20T11:21:58.6792921Z         "impl",
2026-06-20T11:21:58.6793160Z         "unit",
2026-06-20T11:21:58.6793397Z         "int"
2026-06-20T11:21:58.6793818Z       ],
2026-06-20T11:21:58.6794047Z       "stages": {
2026-06-20T11:21:58.6794281Z         "doc": {
2026-06-20T11:21:58.6794548Z           "complete": false,
2026-06-20T11:21:58.6794802Z           "evidence": []
2026-06-20T11:21:58.6795034Z         },
2026-06-20T11:21:58.6795277Z         "impl": {
2026-06-20T11:21:58.6795539Z           "complete": true,
2026-06-20T11:21:58.6795798Z           "evidence": [
2026-06-20T11:21:58.6796037Z             {
2026-06-20T11:21:58.6796387Z               "path": "crates/spt-daemon/src/livehost.rs",
2026-06-20T11:21:58.6796648Z               "line": 538
2026-06-20T11:21:58.6796890Z             },
2026-06-20T11:21:58.6797229Z             {
2026-06-20T11:21:58.6797558Z               "path": "crates/spt-daemon/src/msg.rs",
2026-06-20T11:21:58.6797811Z               "line": 625
2026-06-20T11:21:58.6798045Z             },
2026-06-20T11:21:58.6798274Z             {
2026-06-20T11:21:58.6798693Z               "path": "crates/spt-daemon/tests/driven_by_selfheal.rs",
2026-06-20T11:21:58.6799038Z               "line": 21
2026-06-20T11:21:58.6799325Z             }
2026-06-20T11:21:58.6799568Z           ]
2026-06-20T11:21:58.6799800Z         },
2026-06-20T11:21:58.6800044Z         "int": {
2026-06-20T11:21:58.6800301Z           "complete": true,
2026-06-20T11:21:58.6800555Z           "evidence": [
2026-06-20T11:21:58.6800793Z             {
2026-06-20T11:21:58.6801217Z               "path": "crates/spt-daemon/tests/driven_by_selfheal.rs",
2026-06-20T11:21:58.6801471Z               "line": 236
2026-06-20T11:21:58.6801706Z             },
2026-06-20T11:21:58.6801945Z             {
2026-06-20T11:21:58.6802355Z               "path": "crates/spt-daemon/tests/driven_by_selfheal.rs",
2026-06-20T11:21:58.6802622Z               "line": 396
2026-06-20T11:21:58.6802866Z             },
2026-06-20T11:21:58.6803096Z             {
2026-06-20T11:21:58.6803519Z               "path": "crates/spt-daemon/tests/inject_control_wedge.rs",
2026-06-20T11:21:58.6803772Z               "line": 1441
2026-06-20T11:21:58.6804018Z             },
2026-06-20T11:21:58.6804235Z             {
2026-06-20T11:21:58.6804640Z               "path": "crates/spt-daemon/tests/inject_control_wedge.rs",
2026-06-20T11:21:58.6804902Z               "line": 1593
2026-06-20T11:21:58.6805128Z             }
2026-06-20T11:21:58.6805371Z           ]
2026-06-20T11:21:58.6805594Z         },
2026-06-20T11:21:58.6805838Z         "unit": {
2026-06-20T11:21:58.6806104Z           "complete": true,
2026-06-20T11:21:58.6806353Z           "evidence": [
2026-06-20T11:21:58.6806597Z             {
2026-06-20T11:21:58.6806938Z               "path": "crates/spt-daemon/src/livehost.rs",
2026-06-20T11:21:58.6807193Z               "line": 887
2026-06-20T11:21:58.6807417Z             }
2026-06-20T11:21:58.6807651Z           ]
2026-06-20T11:21:58.6807885Z         }
2026-06-20T11:21:58.6808123Z       }
2026-06-20T11:21:58.6808353Z     },
2026-06-20T11:21:58.6808567Z     {
2026-06-20T11:21:58.6808902Z       "id": "REQ-HAZARD-DROP-FILE-SINGLE-WRITER",
2026-06-20T11:21:58.6809399Z       "title": "Drop files are daemon-owned single-writer (6.4)",
2026-06-20T11:21:58.6809665Z       "requiredStages": [
2026-06-20T11:21:58.6809909Z         "impl",
2026-06-20T11:21:58.6810157Z         "unit"
2026-06-20T11:21:58.6810394Z       ],
2026-06-20T11:21:58.6810642Z       "stages": {
2026-06-20T11:21:58.6810885Z         "doc": {
2026-06-20T11:21:58.6811148Z           "complete": false,
2026-06-20T11:21:58.6811401Z           "evidence": []
2026-06-20T11:21:58.6811634Z         },
2026-06-20T11:21:58.6811877Z         "impl": {
2026-06-20T11:21:58.6812144Z           "complete": true,
2026-06-20T11:21:58.6812406Z           "evidence": [
2026-06-20T11:21:58.6812634Z             {
2026-06-20T11:21:58.6812949Z               "path": "crates/spt-live/src/echo.rs",
2026-06-20T11:21:58.6813201Z               "line": 25
2026-06-20T11:21:58.6813440Z             },
2026-06-20T11:21:58.6813679Z             {
2026-06-20T11:21:58.6814013Z               "path": "crates/spt-live/src/ingest.rs",
2026-06-20T11:21:58.6814388Z               "line": 26
2026-06-20T11:21:58.6814622Z             },
2026-06-20T11:21:58.6814852Z             {
2026-06-20T11:21:58.6815187Z               "path": "crates/spt-live/src/ingest.rs",
2026-06-20T11:21:58.6815439Z               "line": 159
2026-06-20T11:21:58.6815664Z             }
2026-06-20T11:21:58.6815907Z           ]
2026-06-20T11:21:58.6816140Z         },
2026-06-20T11:21:58.6816384Z         "int": {
2026-06-20T11:21:58.6816650Z           "complete": false,
2026-06-20T11:21:58.6816899Z           "evidence": []
2026-06-20T11:21:58.6817138Z         },
2026-06-20T11:21:58.6817374Z         "unit": {
2026-06-20T11:21:58.6817748Z           "complete": true,
2026-06-20T11:21:58.6818001Z           "evidence": [
2026-06-20T11:21:58.6818236Z             {
2026-06-20T11:21:58.6818555Z               "path": "crates/spt-live/src/echo.rs",
2026-06-20T11:21:58.6818803Z               "line": 188
2026-06-20T11:21:58.6819104Z             },
2026-06-20T11:21:58.6819337Z             {
2026-06-20T11:21:58.6819661Z               "path": "crates/spt-live/src/echo.rs",
2026-06-20T11:21:58.6819912Z               "line": 240
2026-06-20T11:21:58.6820150Z             },
2026-06-20T11:21:58.6820377Z             {
2026-06-20T11:21:58.6820707Z               "path": "crates/spt-live/src/ingest.rs",
2026-06-20T11:21:58.6820964Z               "line": 186
2026-06-20T11:21:58.6821202Z             }
2026-06-20T11:21:58.6821440Z           ]
2026-06-20T11:21:58.6821676Z         }
2026-06-20T11:21:58.6821898Z       }
2026-06-20T11:21:58.6822128Z     },
2026-06-20T11:21:58.6822357Z     {
2026-06-20T11:21:58.6822644Z       "id": "REQ-HAZARD-EBUSY-RENAME",
2026-06-20T11:21:58.6823123Z       "title": "tmp-write + atomic-rename + retry on Windows EBUSY (5.2)",
2026-06-20T11:21:58.6823385Z       "requiredStages": [
2026-06-20T11:21:58.6823619Z         "impl",
2026-06-20T11:21:58.6823867Z         "unit"
2026-06-20T11:21:58.6824095Z       ],
2026-06-20T11:21:58.6824344Z       "stages": {
2026-06-20T11:21:58.6824597Z         "doc": {
2026-06-20T11:21:58.6824855Z           "complete": false,
2026-06-20T11:21:58.6825115Z           "evidence": []
2026-06-20T11:21:58.6825351Z         },
2026-06-20T11:21:58.6825600Z         "impl": {
2026-06-20T11:21:58.6825862Z           "complete": true,
2026-06-20T11:21:58.6826120Z           "evidence": [
2026-06-20T11:21:58.6826356Z             {
2026-06-20T11:21:58.6826691Z               "path": "crates/spt-store/src/atomic.rs",
2026-06-20T11:21:58.6826948Z               "line": 48
2026-06-20T11:21:58.6827182Z             },
2026-06-20T11:21:58.6827426Z             {
2026-06-20T11:21:58.6827751Z               "path": "crates/spt-store/src/atomic.rs",
2026-06-20T11:21:58.6828010Z               "line": 55
2026-06-20T11:21:58.6832163Z             },
2026-06-20T11:21:58.6832430Z             {
2026-06-20T11:21:58.6832788Z               "path": "crates/spt-store/src/atomic.rs",
2026-06-20T11:21:58.6833045Z               "line": 74
2026-06-20T11:21:58.6833283Z             },
2026-06-20T11:21:58.6833526Z             {
2026-06-20T11:21:58.6833865Z               "path": "crates/spt-store/src/atomic.rs",
2026-06-20T11:21:58.6834123Z               "line": 91
2026-06-20T11:21:58.6834350Z             }
2026-06-20T11:21:58.6834594Z           ]
2026-06-20T11:21:58.6834828Z         },
2026-06-20T11:21:58.6835062Z         "int": {
2026-06-20T11:21:58.6835333Z           "complete": false,
2026-06-20T11:21:58.6835590Z           "evidence": []
2026-06-20T11:21:58.6835826Z         },
2026-06-20T11:21:58.6836064Z         "unit": {
2026-06-20T11:21:58.6836326Z           "complete": true,
2026-06-20T11:21:58.6836579Z           "evidence": [
2026-06-20T11:21:58.6836822Z             {
2026-06-20T11:21:58.6837165Z               "path": "crates/spt-store/src/atomic.rs",
2026-06-20T11:21:58.6837427Z               "line": 149
2026-06-20T11:21:58.6837658Z             },
2026-06-20T11:21:58.6837895Z             {
2026-06-20T11:21:58.6838230Z               "path": "crates/spt-store/src/atomic.rs",
2026-06-20T11:21:58.6838661Z               "line": 166
2026-06-20T11:21:58.6838907Z             },
2026-06-20T11:21:58.6839198Z             {
2026-06-20T11:21:58.6839542Z               "path": "crates/spt-store/src/atomic.rs",
2026-06-20T11:21:58.6839784Z               "line": 176
2026-06-20T11:21:58.6840023Z             },
2026-06-20T11:21:58.6840262Z             {
2026-06-20T11:21:58.6840586Z               "path": "crates/spt-store/src/atomic.rs",
2026-06-20T11:21:58.6840840Z               "line": 194
2026-06-20T11:21:58.6841075Z             },
2026-06-20T11:21:58.6841302Z             {
2026-06-20T11:21:58.6841636Z               "path": "crates/spt-store/src/atomic.rs",
2026-06-20T11:21:58.6841993Z               "line": 207
2026-06-20T11:21:58.6842237Z             }
2026-06-20T11:21:58.6842466Z           ]
2026-06-20T11:21:58.6842704Z         }
2026-06-20T11:21:58.6842924Z       }
2026-06-20T11:21:58.6843148Z     },
2026-06-20T11:21:58.6843387Z     {
2026-06-20T11:21:58.6843697Z       "id": "REQ-HAZARD-ECHO-BEFORE-SIGNOFF",
2026-06-20T11:21:58.6844271Z       "title": "Echo-commune fires before INIT_SIGNOFF on orphan teardown (3.3)",
2026-06-20T11:21:58.6844520Z       "requiredStages": [
2026-06-20T11:21:58.6844763Z         "impl",
2026-06-20T11:21:58.6844997Z         "unit"
2026-06-20T11:21:58.6845240Z       ],
2026-06-20T11:21:58.6845479Z       "stages": {
2026-06-20T11:21:58.6845722Z         "doc": {
2026-06-20T11:21:58.6845990Z           "complete": false,
2026-06-20T11:21:58.6846245Z           "evidence": []
2026-06-20T11:21:58.6846486Z         },
2026-06-20T11:21:58.6846725Z         "impl": {
2026-06-20T11:21:58.6846992Z           "complete": true,
2026-06-20T11:21:58.6847245Z           "evidence": [
2026-06-20T11:21:58.6847482Z             {
2026-06-20T11:21:58.6847850Z               "path": "crates/spt-daemon/src/lifecycle.rs",
2026-06-20T11:21:58.6848097Z               "line": 466
2026-06-20T11:21:58.6848340Z             },
2026-06-20T11:21:58.6848575Z             {
2026-06-20T11:21:58.6848932Z               "path": "crates/spt-live/src/signoff.rs",
2026-06-20T11:21:58.6849277Z               "line": 26
2026-06-20T11:21:58.6849511Z             }
2026-06-20T11:21:58.6849753Z           ]
2026-06-20T11:21:58.6849982Z         },
2026-06-20T11:21:58.6850226Z         "int": {
2026-06-20T11:21:58.6850483Z           "complete": false,
2026-06-20T11:21:58.6850736Z           "evidence": []
2026-06-20T11:21:58.6850974Z         },
2026-06-20T11:21:58.6851212Z         "unit": {
2026-06-20T11:21:58.6851475Z           "complete": true,
2026-06-20T11:21:58.6851727Z           "evidence": [
2026-06-20T11:21:58.6851976Z             {
2026-06-20T11:21:58.6852320Z               "path": "crates/spt-live/src/signoff.rs",
2026-06-20T11:21:58.6852577Z               "line": 150
2026-06-20T11:21:58.6852816Z             },
2026-06-20T11:21:58.6853050Z             {
2026-06-20T11:21:58.6853374Z               "path": "crates/spt-live/src/signoff.rs",
2026-06-20T11:21:58.6853618Z               "line": 208
2026-06-20T11:21:58.6853860Z             }
2026-06-20T11:21:58.6854103Z           ]
2026-06-20T11:21:58.6854343Z         }
2026-06-20T11:21:58.6854569Z       }
2026-06-20T11:21:58.6854807Z     },
2026-06-20T11:21:58.6855043Z     {
2026-06-20T11:21:58.6855386Z       "id": "REQ-HAZARD-EFFECT-JOURNAL-PTY-WEDGE",
2026-06-20T11:21:58.6881138Z       "title": "The effect journal serializes EVERY PTY effect under one mutex held ACROSS two fsyncs AND the blocking PTY write — so interactive input stutters and ultimately wedges the daemon hard. ROOT (doyle /diagnose, code-grounded + MEASURED on the operator's real Windows box, 2026-06-19): EffectJournal::apply_once (effect.rs:168-188) takes `inner.lock()` and holds it across `write_line(PENDING)` → `effect()` → `write_line(DONE)`, where write_line (effect.rs:235-239) does flush()+sync_all() (a full FlushFileBuffers) — so each effect pays TWO fsyncs under a GLOBAL lock, and the closure `effect()` (the actual PTY write, broker.rs:1257 EffectKind::PtyWrite via attach.rs:197 send_effect) runs while the lock is held. Two operator-visible facets, ONE root: (A) STUTTER/LAG — every keystroke is a PtyWrite effect = 2× sync_all serialized; measured fsync on %LOCALAPPDATA%\\spt-core = median 6.5ms, spikes to 198ms (C: was recently at 100%), so ~13ms+ per keystroke best case, hundreds under contention → 'many but not all keypresses take 100s of ms, choppy, worsens with volume'. (B) HARD PERMANENT WEDGE — when a PtyWrite `effect()` blocks (ConPTY input buffer full / harness not draining stdin), the journal lock is held INDEFINITELY → the single-threaded inbound-stream dispatch (dispatch.rs serve_attach, which both applies input effects AND opens attaches) can never progress → EVERY subsequent attach (`spt rc --view`/`--take`) fails with 'attach request: brain IPC read deadline elapsed' (confirmed: two retries deadline identically; broker control-plane KIND queries still answer — different thread). This REFUTES the W2-deferred ruling that park-(b)/(c) is 'Windows-benign because ConPTY absorbs 4MiB' — on the real box the input path wedges regardless. DISTINCT from W1 (REQ-HAZARD-INJECT-CONTROL-COEXIST = the OUTPUT drain, correctly fixed @8b5583e; output uses broker.rs:1106 append, NOT the fsync journal). This is the INPUT/effect-journal path W1 never touched, and it is THE wedge the operator hits with --take/--view. FIX DIRECTION (candidates, repro-first — extend inject_control_wedge.rs to a REAL backed-up-PTY-consumer + a real rc-client attach assertion, the gap W1's gate missed): (1) do NOT hold the journal lock across effect() — reserve the key + fsync PENDING under lock, RELEASE, run effect(), re-acquire to fsync DONE + mark applied (preserve crash-idempotency via the per-key reservation, not a global hold); (2) bound/fail-fast the PtyWrite itself (the W2-deferred park bound — write_input must never block indefinitely, DSR-answer must not hold the writer mutex across a blocking write); (3) drop per-keystroke fsync on the interactive path — PtyWrite effects are EPHEMERAL (a keystroke lost on a broker crash is retyped; PTY state is not reconstructed from keystroke replay), so in-memory applied-set dedup suffices (the broker survives the brain — that IS the dedup anchor), with async/batched fsync or no-fsync for EffectKind::PtyWrite while durable kinds (NetSend/NetDial/Registry/Spool) keep their fsync. Combine (1)+(3) at minimum. Add a KNOWN-HAZARDS.md entry on landing. (v0.13.0)",
2026-06-20T11:21:58.6881715Z       "requiredStages": [
2026-06-20T11:21:58.6881963Z         "impl",
2026-06-20T11:21:58.6882202Z         "unit",
2026-06-20T11:21:58.6882436Z         "int"
2026-06-20T11:21:58.6882674Z       ],
2026-06-20T11:21:58.6883245Z       "stages": {
2026-06-20T11:21:58.6883515Z         "doc": {
2026-06-20T11:21:58.6883791Z           "complete": false,
2026-06-20T11:21:58.6884044Z           "evidence": []
2026-06-20T11:21:58.6884277Z         },
2026-06-20T11:21:58.6884520Z         "impl": {
2026-06-20T11:21:58.6884782Z           "complete": true,
2026-06-20T11:21:58.6885036Z           "evidence": [
2026-06-20T11:21:58.6885269Z             {
2026-06-20T11:21:58.6885618Z               "path": "crates/spt-daemon/src/effect.rs",
2026-06-20T11:21:58.6885879Z               "line": 99
2026-06-20T11:21:58.6886121Z             },
2026-06-20T11:21:58.6886351Z             {
2026-06-20T11:21:58.6886704Z               "path": "crates/spt-daemon/src/effect.rs",
2026-06-20T11:21:58.6886966Z               "line": 201
2026-06-20T11:21:58.6887209Z             }
2026-06-20T11:21:58.6887451Z           ]
2026-06-20T11:21:58.6887671Z         },
2026-06-20T11:21:58.6887906Z         "int": {
2026-06-20T11:21:58.6888167Z           "complete": true,
2026-06-20T11:21:58.6888418Z           "evidence": [
2026-06-20T11:21:58.6888655Z             {
2026-06-20T11:21:58.6889156Z               "path": "crates/spt-daemon/tests/inject_control_wedge.rs",
2026-06-20T11:21:58.6889407Z               "line": 682
2026-06-20T11:21:58.6889641Z             }
2026-06-20T11:21:58.6889871Z           ]
2026-06-20T11:21:58.6890110Z         },
2026-06-20T11:21:58.6890356Z         "unit": {
2026-06-20T11:21:58.6890740Z           "complete": true,
2026-06-20T11:21:58.6890981Z           "evidence": [
2026-06-20T11:21:58.6891215Z             {
2026-06-20T11:21:58.6891556Z               "path": "crates/spt-daemon/src/effect.rs",
2026-06-20T11:21:58.6891803Z               "line": 517
2026-06-20T11:21:58.6892033Z             },
2026-06-20T11:21:58.6892270Z             {
2026-06-20T11:21:58.6892614Z               "path": "crates/spt-daemon/src/effect.rs",
2026-06-20T11:21:58.6892862Z               "line": 576
2026-06-20T11:21:58.6893100Z             }
2026-06-20T11:21:58.6893339Z           ]
2026-06-20T11:21:58.6893577Z         }
2026-06-20T11:21:58.6893814Z       }
2026-06-20T11:21:58.6894164Z     },
2026-06-20T11:21:58.6894404Z     {
2026-06-20T11:21:58.6894733Z       "id": "REQ-HAZARD-ELEVATED-DAEMON-SPAWN",
2026-06-20T11:21:58.6898350Z       "title": "The daemon always runs unelevated in the invoking user's universe, regardless of which command spawns it: an elevated spawner de-elevates (Windows: UAC linked token via CreateProcessWithTokenW; Linux: drop to SUDO_UID/SUDO_GID + the invoker's HOME) — an elevated daemon's pipes deny unelevated clients (every later spt reads not-running→spawn→bind Access-denied) and a sudo'd daemon roots the user's state universe (5.7)",
2026-06-20T11:21:58.6898627Z       "requiredStages": [
2026-06-20T11:21:58.6898860Z         "doc",
2026-06-20T11:21:58.6899201Z         "impl",
2026-06-20T11:21:58.6899439Z         "unit"
2026-06-20T11:21:58.6899682Z       ],
2026-06-20T11:21:58.6899920Z       "stages": {
2026-06-20T11:21:58.6900159Z         "doc": {
2026-06-20T11:21:58.6900412Z           "complete": true,
2026-06-20T11:21:58.6900670Z           "evidence": [
2026-06-20T11:21:58.6900916Z             {
2026-06-20T11:21:58.6901222Z               "path": "docs/KNOWN-HAZARDS.md",
2026-06-20T11:21:58.6901484Z               "line": 214
2026-06-20T11:21:58.6901714Z             }
2026-06-20T11:21:58.6901951Z           ]
2026-06-20T11:21:58.6902181Z         },
2026-06-20T11:21:58.6902435Z         "impl": {
2026-06-20T11:21:58.6902702Z           "complete": true,
2026-06-20T11:21:58.6902960Z           "evidence": [
2026-06-20T11:21:58.6903193Z             {
2026-06-20T11:21:58.6903537Z               "path": "crates/spt-daemon/src/daemon.rs",
2026-06-20T11:21:58.6903794Z               "line": 56
2026-06-20T11:21:58.6904027Z             },
2026-06-20T11:21:58.6904272Z             {
2026-06-20T11:21:58.6904612Z               "path": "crates/spt-daemon/src/daemon.rs",
2026-06-20T11:21:58.6904863Z               "line": 580
2026-06-20T11:21:58.6905106Z             },
2026-06-20T11:21:58.6905340Z             {
2026-06-20T11:21:58.6905697Z               "path": "crates/spt-daemon/src/deelevate.rs",
2026-06-20T11:21:58.6905946Z               "line": 36
2026-06-20T11:21:58.6906185Z             },
2026-06-20T11:21:58.6906424Z             {
2026-06-20T11:21:58.6906781Z               "path": "crates/spt-daemon/src/deelevate.rs",
2026-06-20T11:21:58.6907034Z               "line": 59
2026-06-20T11:21:58.6907265Z             },
2026-06-20T11:21:58.6907519Z             {
2026-06-20T11:21:58.6907866Z               "path": "crates/spt-daemon/src/deelevate.rs",
2026-06-20T11:21:58.6908124Z               "line": 83
2026-06-20T11:21:58.6908353Z             },
2026-06-20T11:21:58.6908591Z             {
2026-06-20T11:21:58.6909017Z               "path": "crates/spt-daemon/src/deelevate.rs",
2026-06-20T11:21:58.6909263Z               "line": 140
2026-06-20T11:21:58.6909506Z             },
2026-06-20T11:21:58.6909742Z             {
2026-06-20T11:21:58.6910094Z               "path": "crates/spt-daemon/src/deelevate.rs",
2026-06-20T11:21:58.6910353Z               "line": 159
2026-06-20T11:21:58.6910591Z             },
2026-06-20T11:21:58.6910828Z             {
2026-06-20T11:21:58.6911177Z               "path": "crates/spt-daemon/src/deelevate.rs",
2026-06-20T11:21:58.6911434Z               "line": 384
2026-06-20T11:21:58.6911677Z             },
2026-06-20T11:21:58.6911908Z             {
2026-06-20T11:21:58.6912260Z               "path": "crates/spt-daemon/src/deelevate.rs",
2026-06-20T11:21:58.6912624Z               "line": 535
2026-06-20T11:21:58.6912857Z             },
2026-06-20T11:21:58.6913090Z             {
2026-06-20T11:21:58.6913443Z               "path": "crates/spt-daemon/src/deelevate.rs",
2026-06-20T11:21:58.6913691Z               "line": 581
2026-06-20T11:21:58.6913929Z             },
2026-06-20T11:21:58.6914164Z             {
2026-06-20T11:21:58.6914474Z               "path": "crates/spt/src/elevation.rs",
2026-06-20T11:21:58.6914722Z               "line": 300
2026-06-20T11:21:58.6914958Z             },
2026-06-20T11:21:58.6915200Z             {
2026-06-20T11:21:58.6915506Z               "path": "crates/spt/src/main.rs",
2026-06-20T11:21:58.6915891Z               "line": 42
2026-06-20T11:21:58.6916125Z             }
2026-06-20T11:21:58.6916363Z           ]
2026-06-20T11:21:58.6916606Z         },
2026-06-20T11:21:58.6916850Z         "int": {
2026-06-20T11:21:58.6917121Z           "complete": false,
2026-06-20T11:21:58.6917393Z           "evidence": []
2026-06-20T11:21:58.6917628Z         },
2026-06-20T11:21:58.6917873Z         "unit": {
2026-06-20T11:21:58.6918135Z           "complete": true,
2026-06-20T11:21:58.6918394Z           "evidence": [
2026-06-20T11:21:58.6918628Z             {
2026-06-20T11:21:58.6919080Z               "path": "crates/spt-daemon/src/deelevate.rs",
2026-06-20T11:21:58.6919342Z               "line": 813
2026-06-20T11:21:58.6919581Z             },
2026-06-20T11:21:58.6919828Z             {
2026-06-20T11:21:58.6920171Z               "path": "crates/spt-daemon/src/deelevate.rs",
2026-06-20T11:21:58.6920421Z               "line": 854
2026-06-20T11:21:58.6920655Z             },
2026-06-20T11:21:58.6920903Z             {
2026-06-20T11:21:58.6921256Z               "path": "crates/spt-daemon/src/deelevate.rs",
2026-06-20T11:21:58.6921504Z               "line": 928
2026-06-20T11:21:58.6921746Z             }
2026-06-20T11:21:58.6921975Z           ]
2026-06-20T11:21:58.6922218Z         }
2026-06-20T11:21:58.6922463Z       }
2026-06-20T11:21:58.6922701Z     },
2026-06-20T11:21:58.6922938Z     {
2026-06-20T11:21:58.6923302Z       "id": "REQ-HAZARD-ENDPOINT-RUN-ATTACH-OUTPUT",
2026-06-20T11:21:58.6937039Z       "title": "A clean `spt rc` attach to a LIVE spt-hosted (`endpoint run`) harness must DELIVER the harness's PTY output. KEYSTONE — the operator's central 'attach shows no output' symptom, reproduced on the real dummy-harness fixture (v0.12.1 Wave 1) with NO death and NO wedge: bringup succeeds (online, harness pid alive + heartbeating, psyche hosted), the attach CONNECTS (PUMP_IPC_READER spawned, no RC_FAIL, holds the full window) — but receives EXACTLY 0 bytes over 10s of the harness's flushed [session.self] stdout. DISTINCT from REQ-HAZARD-VIEWER-CLOSE-DETACH (death) and REQ-HAZARD-ATTACH-WEDGE (dead-child backpressure): here the harness is ALIVE and the attach is a clean first subscribe. This BLOCKS the 'view is independent' invariant — re-attach is meaningless if a live endpoint-run harness shows nothing. KNOWN-GOOD (rules out 'no drain'): attach.rs `local_attach_via_loopback_conn_rides_the_same_pump` + `broker_spawns_the_pty_child_in_the_requested_cwd` prove the broker DOES drain+fan a `spawn_session` PTY child to a loopback attach over the SAME transport rc uses. Both spawn_session and endpoint-run's spawn_session_pid send KIND_SPAWN → the same dispatch_spawn (broker.rs:706/835) which starts the per-session drain+OutputLog — so the gap is NARROWER than 'no drain', endpoint-run-specific. Root candidates: (a) spawn_session_pid's SpawnReq stdio/env/cwd differs so the dummy's stdout isn't the captured ConPTY; (b) the harness stdout WRITE BLOCKS because the ConPTY buffer fills (drain not reading THIS pty) — explains alive-but-0-bytes; (c) ConPTY reader-park (KH 7.6) on this path; (d) `spt rc` resolve_session/subscribe for an endpoint-run session subscribes to the wrong/empty log. (v0.12.1)",
2026-06-20T11:21:58.6937344Z       "requiredStages": [
2026-06-20T11:21:58.6937583Z         "impl",
2026-06-20T11:21:58.6937946Z         "unit",
2026-06-20T11:21:58.6938189Z         "int"
2026-06-20T11:21:58.6938424Z       ],
2026-06-20T11:21:58.6938665Z       "stages": {
2026-06-20T11:21:58.6938908Z         "doc": {
2026-06-20T11:21:58.6939242Z           "complete": false,
2026-06-20T11:21:58.6939495Z           "evidence": []
2026-06-20T11:21:58.6939719Z         },
2026-06-20T11:21:58.6939966Z         "impl": {
2026-06-20T11:21:58.6940224Z           "complete": true,
2026-06-20T11:21:58.6940472Z           "evidence": [
2026-06-20T11:21:58.6940716Z             {
2026-06-20T11:21:58.6941068Z               "path": "crates/spt-daemon/src/attach.rs",
2026-06-20T11:21:58.6941324Z               "line": 106
2026-06-20T11:21:58.6941665Z             }
2026-06-20T11:21:58.6941908Z           ]
2026-06-20T11:21:58.6942142Z         },
2026-06-20T11:21:58.6942385Z         "int": {
2026-06-20T11:21:58.6942653Z           "complete": true,
2026-06-20T11:21:58.6942901Z           "evidence": [
2026-06-20T11:21:58.6943133Z             {
2026-06-20T11:21:58.6943521Z               "path": "crates/spt/tests/dummy_harness_e2e.rs",
2026-06-20T11:21:58.6943777Z               "line": 296
2026-06-20T11:21:58.6944006Z             }
2026-06-20T11:21:58.6944267Z           ]
2026-06-20T11:21:58.6944508Z         },
2026-06-20T11:21:58.6944751Z         "unit": {
2026-06-20T11:21:58.6945109Z           "complete": true,
2026-06-20T11:21:58.6945477Z           "evidence": [
2026-06-20T11:21:58.6945831Z             {
2026-06-20T11:21:58.6946187Z               "path": "crates/spt-daemon/tests/attach.rs",
2026-06-20T11:21:58.6946441Z               "line": 464
2026-06-20T11:21:58.6946686Z             }
2026-06-20T11:21:58.6946927Z           ]
2026-06-20T11:21:58.6947167Z         }
2026-06-20T11:21:58.6947400Z       }
2026-06-20T11:21:58.6947637Z     },
2026-06-20T11:21:58.6947862Z     {
2026-06-20T11:21:58.6948148Z       "id": "REQ-HAZARD-ENV-SUBST",
2026-06-20T11:21:58.6957707Z       "title": "`spt endpoint run` HONORS manifest [env.<VAR>] direction=inject values (with {key} substitution) on the spt-hosted spawn. Today only the [session.self] command ARGV is {id}-substituted; the [env] inject value is NEITHER substituted NOR applied — manifest.schema.json promises EnvVar.value = 'Value to inject (with substitution)' but prepare_harness_spawn fills only argv and SpawnReq carries no env, so a [env.SPT_ENDPOINT_ID].value='{id}' arrives EMPTY. A FLAGLESS harness (bare `claude`, no argv slot for {id}) then routes the id via [env] → empty → SessionStart sees empty $SPT_ENDPOINT_ID → seeds-by-PPID instead of binding → ZERO perch → NO_PERCH (the actual wall-b bind blocker; perri hard-repro'd). SILENT failure (empty inject, no error). FIX (doyle ruled a): fill every [env] inject value from the SAME {key} catalog as argv/role (mirror F-009 TEMPLATE fill, whole-string fill_template for an env value), thread it through SpawnReq.env → the broker sets it on the spawned PTY child. Correctness fix — schema already promises it, NO manifest change, NO new binary. PAIRS with REQ-SEND-SPT-HOSTED to make endpoint run fully work. doyle F-013. (post-v0.10.0)",
2026-06-20T11:21:58.6958017Z       "requiredStages": [
2026-06-20T11:21:58.6958265Z         "impl",
2026-06-20T11:21:58.6958508Z         "unit",
2026-06-20T11:21:58.6958751Z         "int"
2026-06-20T11:21:58.6959052Z       ],
2026-06-20T11:21:58.6959295Z       "stages": {
2026-06-20T11:21:58.6959529Z         "doc": {
2026-06-20T11:21:58.6959796Z           "complete": false,
2026-06-20T11:21:58.6960042Z           "evidence": []
2026-06-20T11:21:58.6960296Z         },
2026-06-20T11:21:58.6960534Z         "impl": {
2026-06-20T11:21:58.6960796Z           "complete": true,
2026-06-20T11:21:58.6961048Z           "evidence": [
2026-06-20T11:21:58.6961292Z             {
2026-06-20T11:21:58.6961668Z               "path": "crates/spt-daemon/src/harnesshost.rs",
2026-06-20T11:21:58.6961911Z               "line": 123
2026-06-20T11:21:58.6962151Z             },
2026-06-20T11:21:58.6962382Z             {
2026-06-20T11:21:58.6962709Z               "path": "crates/spt-term/src/pty.rs",
2026-06-20T11:21:58.6963091Z               "line": 134
2026-06-20T11:21:58.6963324Z             }
2026-06-20T11:21:58.6963567Z           ]
2026-06-20T11:21:58.6963811Z         },
2026-06-20T11:21:58.6964055Z         "int": {
2026-06-20T11:21:58.6964312Z           "complete": true,
2026-06-20T11:21:58.6964569Z           "evidence": [
2026-06-20T11:21:58.6964807Z             {
2026-06-20T11:21:58.6965155Z               "path": "crates/spt-daemon/tests/broker.rs",
2026-06-20T11:21:58.6965411Z               "line": 312
2026-06-20T11:21:58.6965653Z             },
2026-06-20T11:21:58.6965896Z             {
2026-06-20T11:21:58.6966244Z               "path": "crates/spt-daemon/tests/broker.rs",
2026-06-20T11:21:58.6966597Z               "line": 508
2026-06-20T11:21:58.6966840Z             }
2026-06-20T11:21:58.6967078Z           ]
2026-06-20T11:21:58.6967313Z         },
2026-06-20T11:21:58.6967547Z         "unit": {
2026-06-20T11:21:58.6967811Z           "complete": true,
2026-06-20T11:21:58.6968071Z           "evidence": [
2026-06-20T11:21:58.6968307Z             {
2026-06-20T11:21:58.6968682Z               "path": "crates/spt-daemon/src/harnesshost.rs",
2026-06-20T11:21:58.6968930Z               "line": 250
2026-06-20T11:21:58.6969244Z             }
2026-06-20T11:21:58.6969479Z           ]
2026-06-20T11:21:58.6969735Z         }
2026-06-20T11:21:58.6969960Z       }
2026-06-20T11:21:58.6970194Z     },
2026-06-20T11:21:58.6970462Z     {
2026-06-20T11:21:58.6970784Z       "id": "REQ-HAZARD-ENVELOPE-CR-LINESAFE",
2026-06-20T11:21:58.6975588Z       "title": "Envelope CR-linesafety (4.1): the line-framed EVENT codec must neutralize raw carriage returns — `event_body_escape` folds CRLF/lone-CR to the codec's representable linebreak (`\\n`→`<br>`) BEFORE framing, so a body carrying `\\r` (Windows `echo`/CRLF text crossing nodes) cannot survive into the single-line envelope and trigger a receiver terminal CR→col0 overwrite that corrupts the frame. Robustness on unrepresentable input, NOT a wire-format change (decoder untouched, amp-last invariant held). Belt-and-suspenders: `spt send`/`ring` also trim stdin (parity with `notify`).",
2026-06-20T11:21:58.6975900Z       "requiredStages": [
2026-06-20T11:21:58.6976150Z         "impl",
2026-06-20T11:21:58.6976394Z         "unit"
2026-06-20T11:21:58.6976623Z       ],
2026-06-20T11:21:58.6976876Z       "stages": {
2026-06-20T11:21:58.6977114Z         "doc": {
2026-06-20T11:21:58.6977380Z           "complete": false,
2026-06-20T11:21:58.6977633Z           "evidence": []
2026-06-20T11:21:58.6977864Z         },
2026-06-20T11:21:58.6978107Z         "impl": {
2026-06-20T11:21:58.6978367Z           "complete": true,
2026-06-20T11:21:58.6978631Z           "evidence": [
2026-06-20T11:21:58.6978862Z             {
2026-06-20T11:21:58.6979294Z               "path": "crates/spt-proto/src/envelope.rs",
2026-06-20T11:21:58.6979548Z               "line": 31
2026-06-20T11:21:58.6979786Z             }
2026-06-20T11:21:58.6980030Z           ]
2026-06-20T11:21:58.6980262Z         },
2026-06-20T11:21:58.6980500Z         "int": {
2026-06-20T11:21:58.6980764Z           "complete": false,
2026-06-20T11:21:58.6981017Z           "evidence": []
2026-06-20T11:21:58.6981257Z         },
2026-06-20T11:21:58.6981496Z         "unit": {
2026-06-20T11:21:58.6981760Z           "complete": true,
2026-06-20T11:21:58.6982007Z           "evidence": [
2026-06-20T11:21:58.6982250Z             {
2026-06-20T11:21:58.6982608Z               "path": "crates/spt-proto/src/envelope.rs",
2026-06-20T11:21:58.6982880Z               "line": 181
2026-06-20T11:21:58.6983127Z             }
2026-06-20T11:21:58.6983355Z           ]
2026-06-20T11:21:58.6983598Z         }
2026-06-20T11:21:58.6983824Z       }
2026-06-20T11:21:58.6984058Z     },
2026-06-20T11:21:58.6984292Z     {
2026-06-20T11:21:58.6984621Z       "id": "REQ-HAZARD-ENVELOPE-DECODE-ORDER",
2026-06-20T11:21:58.6985074Z       "title": "Envelope decode order, ampersand decoded last (4.1)",
2026-06-20T11:21:58.6985331Z       "requiredStages": [
2026-06-20T11:21:58.6985703Z         "impl",
2026-06-20T11:21:58.6985937Z         "unit"
2026-06-20T11:21:58.6986176Z       ],
2026-06-20T11:21:58.6986417Z       "stages": {
2026-06-20T11:21:58.6986648Z         "doc": {
2026-06-20T11:21:58.6986906Z           "complete": false,
2026-06-20T11:21:58.6987164Z           "evidence": []
2026-06-20T11:21:58.6987394Z         },
2026-06-20T11:21:58.6987626Z         "impl": {
2026-06-20T11:21:58.6987893Z           "complete": true,
2026-06-20T11:21:58.6988132Z           "evidence": [
2026-06-20T11:21:58.6988371Z             {
2026-06-20T11:21:58.6988719Z               "path": "crates/spt-proto/src/envelope.rs",
2026-06-20T11:21:58.6989056Z               "line": 49
2026-06-20T11:21:58.6989422Z             },
2026-06-20T11:21:58.6989660Z             {
2026-06-20T11:21:58.6990022Z               "path": "crates/spt-proto/src/envelope.rs",
2026-06-20T11:21:58.6990256Z               "line": 81
2026-06-20T11:21:58.6990483Z             }
2026-06-20T11:21:58.6990717Z           ]
2026-06-20T11:21:58.6990957Z         },
2026-06-20T11:21:58.6991195Z         "int": {
2026-06-20T11:21:58.6991456Z           "complete": false,
2026-06-20T11:21:58.6991704Z           "evidence": []
2026-06-20T11:21:58.6991929Z         },
2026-06-20T11:21:58.6992176Z         "unit": {
2026-06-20T11:21:58.6992442Z           "complete": true,
2026-06-20T11:21:58.6992686Z           "evidence": [
2026-06-20T11:21:58.6992920Z             {
2026-06-20T11:21:58.6993267Z               "path": "crates/spt-proto/src/envelope.rs",
2026-06-20T11:21:58.6993526Z               "line": 156
2026-06-20T11:21:58.6993759Z             },
2026-06-20T11:21:58.6993996Z             {
2026-06-20T11:21:58.6994337Z               "path": "crates/spt-proto/src/envelope.rs",
2026-06-20T11:21:58.6994599Z               "line": 173
2026-06-20T11:21:58.6994843Z             },
2026-06-20T11:21:58.6995067Z             {
2026-06-20T11:21:58.6995416Z               "path": "crates/spt-proto/src/envelope.rs",
2026-06-20T11:21:58.6995677Z               "line": 196
2026-06-20T11:21:58.6995920Z             }
2026-06-20T11:21:58.6996163Z           ]
2026-06-20T11:21:58.6996398Z         }
2026-06-20T11:21:58.6996637Z       }
2026-06-20T11:21:58.6996864Z     },
2026-06-20T11:21:58.6997091Z     {
2026-06-20T11:21:58.6997415Z       "id": "REQ-HAZARD-ENVELOPE-PARSER-SAFE",
2026-06-20T11:21:58.6997920Z       "title": "Two-slice envelope parser is panic-free and tolerant (4.2)",
2026-06-20T11:21:58.6998195Z       "requiredStages": [
2026-06-20T11:21:58.6998425Z         "impl",
2026-06-20T11:21:58.6998664Z         "unit"
2026-06-20T11:21:58.6998898Z       ],
2026-06-20T11:21:58.6999232Z       "stages": {
2026-06-20T11:21:58.6999472Z         "doc": {
2026-06-20T11:21:58.6999747Z           "complete": false,
2026-06-20T11:21:58.7000005Z           "evidence": []
2026-06-20T11:21:58.7000239Z         },
2026-06-20T11:21:58.7000477Z         "impl": {
2026-06-20T11:21:58.7000743Z           "complete": true,
2026-06-20T11:21:58.7000987Z           "evidence": [
2026-06-20T11:21:58.7001212Z             {
2026-06-20T11:21:58.7001564Z               "path": "crates/spt-proto/src/envelope.rs",
2026-06-20T11:21:58.7001822Z               "line": 120
2026-06-20T11:21:58.7002056Z             }
2026-06-20T11:21:58.7002292Z           ]
2026-06-20T11:21:58.7002522Z         },
2026-06-20T11:21:58.7002765Z         "int": {
2026-06-20T11:21:58.7003026Z           "complete": false,
2026-06-20T11:21:58.7003283Z           "evidence": []
2026-06-20T11:21:58.7003517Z         },
2026-06-20T11:21:58.7003776Z         "unit": {
2026-06-20T11:21:58.7004038Z           "complete": true,
2026-06-20T11:21:58.7004291Z           "evidence": [
2026-06-20T11:21:58.7004528Z             {
2026-06-20T11:21:58.7004869Z               "path": "crates/spt-proto/src/envelope.rs",
2026-06-20T11:21:58.7005127Z               "line": 212
2026-06-20T11:21:58.7005365Z             },
2026-06-20T11:21:58.7005598Z             {
2026-06-20T11:21:58.7005947Z               "path": "crates/spt-proto/src/envelope.rs",
2026-06-20T11:21:58.7006204Z               "line": 221
2026-06-20T11:21:58.7006557Z             },
2026-06-20T11:21:58.7006804Z             {
2026-06-20T11:21:58.7007153Z               "path": "crates/spt-proto/src/envelope.rs",
2026-06-20T11:21:58.7007409Z               "line": 229
2026-06-20T11:21:58.7007637Z             },
2026-06-20T11:21:58.7007869Z             {
2026-06-20T11:21:58.7008219Z               "path": "crates/spt-proto/src/envelope.rs",
2026-06-20T11:21:58.7008465Z               "line": 239
2026-06-20T11:21:58.7008708Z             },
2026-06-20T11:21:58.7008932Z             {
2026-06-20T11:21:58.7009352Z               "path": "crates/spt-proto/src/envelope.rs",
2026-06-20T11:21:58.7009604Z               "line": 249
2026-06-20T11:21:58.7009976Z             }
2026-06-20T11:21:58.7010213Z           ]
2026-06-20T11:21:58.7010451Z         }
2026-06-20T11:21:58.7010678Z       }
2026-06-20T11:21:58.7010913Z     },
2026-06-20T11:21:58.7011142Z     {
2026-06-20T11:21:58.7011443Z       "id": "REQ-HAZARD-EPHEMERAL-CLEANUP",
2026-06-20T11:21:58.7011924Z       "title": "Ephemeral perch cleanup on every ring exit path (3.1)",
2026-06-20T11:21:58.7012186Z       "requiredStages": [
2026-06-20T11:21:58.7012425Z         "impl",
2026-06-20T11:21:58.7012674Z         "unit"
2026-06-20T11:21:58.7012904Z       ],
2026-06-20T11:21:58.7013158Z       "stages": {
2026-06-20T11:21:58.7013397Z         "doc": {
2026-06-20T11:21:58.7013669Z           "complete": false,
2026-06-20T11:21:58.7013920Z           "evidence": []
2026-06-20T11:21:58.7014154Z         },
2026-06-20T11:21:58.7014402Z         "impl": {
2026-06-20T11:21:58.7014660Z           "complete": true,
2026-06-20T11:21:58.7014918Z           "evidence": [
2026-06-20T11:21:58.7015159Z             {
2026-06-20T11:21:58.7015471Z               "path": "crates/spt-msg/src/ring.rs",
2026-06-20T11:21:58.7015715Z               "line": 14
2026-06-20T11:21:58.7015949Z             },
2026-06-20T11:21:58.7016188Z             {
2026-06-20T11:21:58.7016498Z               "path": "crates/spt-msg/src/ring.rs",
2026-06-20T11:21:58.7016754Z               "line": 63
2026-06-20T11:21:58.7016989Z             }
2026-06-20T11:21:58.7017227Z           ]
2026-06-20T11:21:58.7017461Z         },
2026-06-20T11:21:58.7017703Z         "int": {
2026-06-20T11:21:58.7017964Z           "complete": false,
2026-06-20T11:21:58.7018212Z           "evidence": []
2026-06-20T11:21:58.7018453Z         },
2026-06-20T11:21:58.7018691Z         "unit": {
2026-06-20T11:21:58.7019030Z           "complete": true,
2026-06-20T11:21:58.7019278Z           "evidence": [
2026-06-20T11:21:58.7019516Z             {
2026-06-20T11:21:58.7019836Z               "path": "crates/spt-msg/src/ring.rs",
2026-06-20T11:21:58.7020090Z               "line": 164
2026-06-20T11:21:58.7020324Z             },
2026-06-20T11:21:58.7020560Z             {
2026-06-20T11:21:58.7020877Z               "path": "crates/spt-msg/src/ring.rs",
2026-06-20T11:21:58.7021135Z               "line": 198
2026-06-20T11:21:58.7021369Z             },
2026-06-20T11:21:58.7021607Z             {
2026-06-20T11:21:58.7021922Z               "path": "crates/spt-msg/src/ring.rs",
2026-06-20T11:21:58.7022169Z               "line": 220
2026-06-20T11:21:58.7022408Z             }
2026-06-20T11:21:58.7022637Z           ]
2026-06-20T11:21:58.7022871Z         }
2026-06-20T11:21:58.7023104Z       }
2026-06-20T11:21:58.7023333Z     },
2026-06-20T11:21:58.7023561Z     {
2026-06-20T11:21:58.7023856Z       "id": "REQ-HAZARD-EPOCH-RESET",
2026-06-20T11:21:58.7027496Z       "title": "Advertisement-epoch reset strands a node: peers' higher last-seen epoch drops the reset node's fresh advertisements as Stale until the counter outruns history. Common case (full reinstall/re-pair) is mitigated by REQ-SUBNET-7's ceremony eviction (peer-side epoch memory dies with the deleted row — acceptance-verified); the residual narrow slice (epoch file lost, identity kept) is documented, guard deferred to a field hit (4.11)",
2026-06-20T11:21:58.7027783Z       "requiredStages": [],
2026-06-20T11:21:58.7028026Z       "stages": {
2026-06-20T11:21:58.7028389Z         "doc": {
2026-06-20T11:21:58.7028658Z           "complete": true,
2026-06-20T11:21:58.7028899Z           "evidence": [
2026-06-20T11:21:58.7029208Z             {
2026-06-20T11:21:58.7029513Z               "path": "docs/KNOWN-HAZARDS.md",
2026-06-20T11:21:58.7029773Z               "line": 165
2026-06-20T11:21:58.7030006Z             }
2026-06-20T11:21:58.7030239Z           ]
2026-06-20T11:21:58.7030463Z         },
2026-06-20T11:21:58.7030706Z         "impl": {
2026-06-20T11:21:58.7030974Z           "complete": false,
2026-06-20T11:21:58.7031220Z           "evidence": []
2026-06-20T11:21:58.7031456Z         },
2026-06-20T11:21:58.7031704Z         "int": {
2026-06-20T11:21:58.7032066Z           "complete": false,
2026-06-20T11:21:58.7032320Z           "evidence": []
2026-06-20T11:21:58.7032549Z         },
2026-06-20T11:21:58.7032796Z         "unit": {
2026-06-20T11:21:58.7033058Z           "complete": false,
2026-06-20T11:21:58.7033311Z           "evidence": []
2026-06-20T11:21:58.7033545Z         }
2026-06-20T11:21:58.7033770Z       }
2026-06-20T11:21:58.7034001Z     },
2026-06-20T11:21:58.7034226Z     {
2026-06-20T11:21:58.7034555Z       "id": "REQ-HAZARD-EVENTPART-REASSEMBLY",
2026-06-20T11:21:58.7035184Z       "title": "EVENT-PART split/reassembly is byte-exact; orphan parts dropped silently",
2026-06-20T11:21:58.7035451Z       "requiredStages": [
2026-06-20T11:21:58.7035700Z         "impl",
2026-06-20T11:21:58.7035933Z         "unit"
2026-06-20T11:21:58.7036171Z       ],
2026-06-20T11:21:58.7036432Z       "stages": {
2026-06-20T11:21:58.7036678Z         "doc": {
2026-06-20T11:21:58.7036940Z           "complete": false,
2026-06-20T11:21:58.7037197Z           "evidence": []
2026-06-20T11:21:58.7037455Z         },
2026-06-20T11:21:58.7037694Z         "impl": {
2026-06-20T11:21:58.7037957Z           "complete": true,
2026-06-20T11:21:58.7038203Z           "evidence": [
2026-06-20T11:21:58.7038447Z             {
2026-06-20T11:21:58.7038766Z               "path": "crates/spt-proto/src/chunk.rs",
2026-06-20T11:21:58.7039099Z               "line": 76
2026-06-20T11:21:58.7039341Z             },
2026-06-20T11:21:58.7039573Z             {
2026-06-20T11:21:58.7039923Z               "path": "crates/spt-proto/src/chunk.rs",
2026-06-20T11:21:58.7040189Z               "line": 167
2026-06-20T11:21:58.7040431Z             },
2026-06-20T11:21:58.7040666Z             {
2026-06-20T11:21:58.7040999Z               "path": "crates/spt-proto/src/chunk.rs",
2026-06-20T11:21:58.7041257Z               "line": 233
2026-06-20T11:21:58.7041482Z             },
2026-06-20T11:21:58.7041718Z             {
2026-06-20T11:21:58.7042049Z               "path": "crates/spt-proto/src/chunk.rs",
2026-06-20T11:21:58.7042302Z               "line": 272
2026-06-20T11:21:58.7042536Z             }
2026-06-20T11:21:58.7042761Z           ]
2026-06-20T11:21:58.7043003Z         },
2026-06-20T11:21:58.7043233Z         "int": {
2026-06-20T11:21:58.7043494Z           "complete": false,
2026-06-20T11:21:58.7043753Z           "evidence": []
2026-06-20T11:21:58.7044001Z         },
2026-06-20T11:21:58.7044238Z         "unit": {
2026-06-20T11:21:58.7044490Z           "complete": true,
2026-06-20T11:21:58.7044748Z           "evidence": [
2026-06-20T11:21:58.7044976Z             {
2026-06-20T11:21:58.7045306Z               "path": "crates/spt-proto/src/chunk.rs",
2026-06-20T11:21:58.7045562Z               "line": 321
2026-06-20T11:21:58.7045806Z             },
2026-06-20T11:21:58.7046035Z             {
2026-06-20T11:21:58.7046369Z               "path": "crates/spt-proto/src/chunk.rs",
2026-06-20T11:21:58.7046618Z               "line": 329
2026-06-20T11:21:58.7046849Z             },
2026-06-20T11:21:58.7047076Z             {
2026-06-20T11:21:58.7047400Z               "path": "crates/spt-proto/src/chunk.rs",
2026-06-20T11:21:58.7047649Z               "line": 356
2026-06-20T11:21:58.7047892Z             },
2026-06-20T11:21:58.7048129Z             {
2026-06-20T11:21:58.7048454Z               "path": "crates/spt-proto/src/chunk.rs",
2026-06-20T11:21:58.7048692Z               "line": 395
2026-06-20T11:21:58.7049122Z             },
2026-06-20T11:21:58.7049355Z             {
2026-06-20T11:21:58.7049683Z               "path": "crates/spt-proto/src/chunk.rs",
2026-06-20T11:21:58.7049948Z               "line": 406
2026-06-20T11:21:58.7050182Z             },
2026-06-20T11:21:58.7050415Z             {
2026-06-20T11:21:58.7050745Z               "path": "crates/spt-proto/src/chunk.rs",
2026-06-20T11:21:58.7051006Z               "line": 418
2026-06-20T11:21:58.7051236Z             },
2026-06-20T11:21:58.7051479Z             {
2026-06-20T11:21:58.7051808Z               "path": "crates/spt-proto/src/chunk.rs",
2026-06-20T11:21:58.7052047Z               "line": 442
2026-06-20T11:21:58.7052397Z             }
2026-06-20T11:21:58.7052628Z           ]
2026-06-20T11:21:58.7052862Z         }
2026-06-20T11:21:58.7053087Z       }
2026-06-20T11:21:58.7053326Z     },
2026-06-20T11:21:58.7053563Z     {
2026-06-20T11:21:58.7053844Z       "id": "REQ-HAZARD-GEN-START-NOW",
2026-06-20T11:21:58.7054275Z       "title": "gen_start = now() on cold-start and handoff (2.4)",
2026-06-20T11:21:58.7054527Z       "requiredStages": [
2026-06-20T11:21:58.7054770Z         "impl",
2026-06-20T11:21:58.7055009Z         "int"
2026-06-20T11:21:58.7055246Z       ],
2026-06-20T11:21:58.7055488Z       "stages": {
2026-06-20T11:21:58.7055722Z         "doc": {
2026-06-20T11:21:58.7055995Z           "complete": false,
2026-06-20T11:21:58.7056248Z           "evidence": []
2026-06-20T11:21:58.7056476Z         },
2026-06-20T11:21:58.7056709Z         "impl": {
2026-06-20T11:21:58.7056976Z           "complete": true,
2026-06-20T11:21:58.7057220Z           "evidence": [
2026-06-20T11:21:58.7057447Z             {
2026-06-20T11:21:58.7057788Z               "path": "crates/spt-daemon/src/brain.rs",
2026-06-20T11:21:58.7058026Z               "line": 22
2026-06-20T11:21:58.7058260Z             }
2026-06-20T11:21:58.7058490Z           ]
2026-06-20T11:21:58.7058723Z         },
2026-06-20T11:21:58.7059048Z         "int": {
2026-06-20T11:21:58.7059300Z           "complete": true,
2026-06-20T11:21:58.7059548Z           "evidence": [
2026-06-20T11:21:58.7059787Z             {
2026-06-20T11:21:58.7060153Z               "path": "crates/spt-daemon/tests/handoff.rs",
2026-06-20T11:21:58.7060400Z               "line": 18
2026-06-20T11:21:58.7060632Z             }
2026-06-20T11:21:58.7060875Z           ]
2026-06-20T11:21:58.7061124Z         },
2026-06-20T11:21:58.7061400Z         "unit": {
2026-06-20T11:21:58.7061667Z           "complete": false,
2026-06-20T11:21:58.7061924Z           "evidence": []
2026-06-20T11:21:58.7062158Z         }
2026-06-20T11:21:58.7062405Z       }
2026-06-20T11:21:58.7062631Z     },
2026-06-20T11:21:58.7062871Z     {
2026-06-20T11:21:58.7067361Z       "id": "REQ-HAZARD-GRACE-BEFORE-SIGNOFF",
2026-06-20T11:21:58.7067974Z       "title": "Grace-period wait completes before composing INIT_SIGNOFF (1.1)",
2026-06-20T11:21:58.7068244Z       "requiredStages": [
2026-06-20T11:21:58.7068483Z         "impl",
2026-06-20T11:21:58.7068745Z         "unit"
2026-06-20T11:21:58.7069093Z       ],
2026-06-20T11:21:58.7069351Z       "stages": {
2026-06-20T11:21:58.7069593Z         "doc": {
2026-06-20T11:21:58.7069860Z           "complete": false,
2026-06-20T11:21:58.7070113Z           "evidence": []
2026-06-20T11:21:58.7070352Z         },
2026-06-20T11:21:58.7070586Z         "impl": {
2026-06-20T11:21:58.7070846Z           "complete": true,
2026-06-20T11:21:58.7071111Z           "evidence": [
2026-06-20T11:21:58.7071340Z             {
2026-06-20T11:21:58.7071702Z               "path": "crates/spt-daemon/src/lifecycle.rs",
2026-06-20T11:21:58.7071960Z               "line": 465
2026-06-20T11:21:58.7072189Z             },
2026-06-20T11:21:58.7072431Z             {
2026-06-20T11:21:58.7072765Z               "path": "crates/spt-live/src/signoff.rs",
2026-06-20T11:21:58.7073008Z               "line": 27
2026-06-20T11:21:58.7073252Z             }
2026-06-20T11:21:58.7073485Z           ]
2026-06-20T11:21:58.7073720Z         },
2026-06-20T11:21:58.7073964Z         "int": {
2026-06-20T11:21:58.7074388Z           "complete": false,
2026-06-20T11:21:58.7074641Z           "evidence": []
2026-06-20T11:21:58.7074875Z         },
2026-06-20T11:21:58.7075119Z         "unit": {
2026-06-20T11:21:58.7075381Z           "complete": true,
2026-06-20T11:21:58.7075637Z           "evidence": [
2026-06-20T11:21:58.7075870Z             {
2026-06-20T11:21:58.7076232Z               "path": "crates/spt-daemon/src/lifecycle.rs",
2026-06-20T11:21:58.7076495Z               "line": 990
2026-06-20T11:21:58.7076734Z             },
2026-06-20T11:21:58.7076967Z             {
2026-06-20T11:21:58.7077301Z               "path": "crates/spt-live/src/signoff.rs",
2026-06-20T11:21:58.7077664Z               "line": 181
2026-06-20T11:21:58.7077901Z             }
2026-06-20T11:21:58.7078140Z           ]
2026-06-20T11:21:58.7078378Z         }
2026-06-20T11:21:58.7078615Z       }
2026-06-20T11:21:58.7078846Z     },
2026-06-20T11:21:58.7079170Z     {
2026-06-20T11:21:58.7079495Z       "id": "REQ-HAZARD-HANDOFF-ARGV-COMPAT",
2026-06-20T11:21:58.7079967Z       "title": "Broker/brain IPC + handoff argv version-tolerant (2.3)",
2026-06-20T11:21:58.7080240Z       "requiredStages": [
2026-06-20T11:21:58.7080473Z         "impl",
2026-06-20T11:21:58.7080716Z         "unit"
2026-06-20T11:21:58.7080944Z       ],
2026-06-20T11:21:58.7081185Z       "stages": {
2026-06-20T11:21:58.7081420Z         "doc": {
2026-06-20T11:21:58.7081685Z           "complete": false,
2026-06-20T11:21:58.7081938Z           "evidence": []
2026-06-20T11:21:58.7082182Z         },
2026-06-20T11:21:58.7082415Z         "impl": {
2026-06-20T11:21:58.7082677Z           "complete": true,
2026-06-20T11:21:58.7082920Z           "evidence": [
2026-06-20T11:21:58.7083164Z             {
2026-06-20T11:21:58.7083511Z               "path": "crates/spt-daemon/src/brainproc.rs",
2026-06-20T11:21:58.7083761Z               "line": 73
2026-06-20T11:21:58.7083992Z             },
2026-06-20T11:21:58.7084224Z             {
2026-06-20T11:21:58.7084585Z               "path": "crates/spt-daemon/src/brainproc.rs",
2026-06-20T11:21:58.7084829Z               "line": 972
2026-06-20T11:21:58.7085073Z             },
2026-06-20T11:21:58.7085297Z             {
2026-06-20T11:21:58.7085631Z               "path": "crates/spt-daemon/src/frame.rs",
2026-06-20T11:21:58.7085887Z               "line": 20
2026-06-20T11:21:58.7086121Z             },
2026-06-20T11:21:58.7086360Z             {
2026-06-20T11:21:58.7086694Z               "path": "crates/spt-daemon/src/frame.rs",
2026-06-20T11:21:58.7086950Z               "line": 100
2026-06-20T11:21:58.7087188Z             },
2026-06-20T11:21:58.7087427Z             {
2026-06-20T11:21:58.7087746Z               "path": "crates/spt-daemon/src/msg.rs",
2026-06-20T11:21:58.7088003Z               "line": 603
2026-06-20T11:21:58.7088243Z             },
2026-06-20T11:21:58.7088466Z             {
2026-06-20T11:21:58.7088830Z               "path": "crates/spt-daemon/src/transport.rs",
2026-06-20T11:21:58.7089147Z               "line": 68
2026-06-20T11:21:58.7089397Z             },
2026-06-20T11:21:58.7089636Z             {
2026-06-20T11:21:58.7089983Z               "path": "crates/spt-daemon/src/transport.rs",
2026-06-20T11:21:58.7090242Z               "line": 80
2026-06-20T11:21:58.7090481Z             }
2026-06-20T11:21:58.7090718Z           ]
2026-06-20T11:21:58.7090951Z         },
2026-06-20T11:21:58.7091195Z         "int": {
2026-06-20T11:21:58.7091454Z           "complete": true,
2026-06-20T11:21:58.7091702Z           "evidence": [
2026-06-20T11:21:58.7091938Z             {
2026-06-20T11:21:58.7092274Z               "path": "crates/spt/tests/n1_pairing.rs",
2026-06-20T11:21:58.7092531Z               "line": 44
2026-06-20T11:21:58.7092756Z             }
2026-06-20T11:21:58.7093000Z           ]
2026-06-20T11:21:58.7093242Z         },
2026-06-20T11:21:58.7093480Z         "unit": {
2026-06-20T11:21:58.7093747Z           "complete": true,
2026-06-20T11:21:58.7093987Z           "evidence": [
2026-06-20T11:21:58.7094230Z             {
2026-06-20T11:21:58.7094727Z               "path": "crates/spt-daemon/src/brainproc.rs",
2026-06-20T11:21:58.7094980Z               "line": 1181
2026-06-20T11:21:58.7095217Z             },
2026-06-20T11:21:58.7095446Z             {
2026-06-20T11:21:58.7095803Z               "path": "crates/spt-daemon/src/brainproc.rs",
2026-06-20T11:21:58.7096047Z               "line": 1197
2026-06-20T11:21:58.7096291Z             },
2026-06-20T11:21:58.7096525Z             {
2026-06-20T11:21:58.7096873Z               "path": "crates/spt-daemon/src/broker.rs",
2026-06-20T11:21:58.7097145Z               "line": 2208
2026-06-20T11:21:58.7097381Z             },
2026-06-20T11:21:58.7097620Z             {
2026-06-20T11:21:58.7098053Z               "path": "crates/spt-daemon/src/frame.rs",
2026-06-20T11:21:58.7098306Z               "line": 152
2026-06-20T11:21:58.7098541Z             },
2026-06-20T11:21:58.7098779Z             {
2026-06-20T11:21:58.7099265Z               "path": "crates/spt-daemon/src/frame.rs",
2026-06-20T11:21:58.7099536Z               "line": 175
2026-06-20T11:21:58.7099816Z             },
2026-06-20T11:21:58.7100053Z             {
2026-06-20T11:21:58.7100382Z               "path": "crates/spt-daemon/src/frame.rs",
2026-06-20T11:21:58.7100634Z               "line": 186
2026-06-20T11:21:58.7100877Z             },
2026-06-20T11:21:58.7101116Z             {
2026-06-20T11:21:58.7101440Z               "path": "crates/spt-daemon/src/frame.rs",
2026-06-20T11:21:58.7101690Z               "line": 202
2026-06-20T11:21:58.7101913Z             },
2026-06-20T11:21:58.7102156Z             {
2026-06-20T11:21:58.7102479Z               "path": "crates/spt-daemon/src/frame.rs",
2026-06-20T11:21:58.7102730Z               "line": 216
2026-06-20T11:21:58.7102969Z             },
2026-06-20T11:21:58.7103191Z             {
2026-06-20T11:21:58.7103541Z               "path": "crates/spt-daemon/src/transport.rs",
2026-06-20T11:21:58.7103787Z               "line": 137
2026-06-20T11:21:58.7104032Z             },
2026-06-20T11:21:58.7104270Z             {
2026-06-20T11:21:58.7104562Z               "path": "crates/spt/src/cli.rs",
2026-06-20T11:21:58.7104819Z               "line": 8152
2026-06-20T11:21:58.7105046Z             },
2026-06-20T11:21:58.7105287Z             {
2026-06-20T11:21:58.7105597Z               "path": "crates/spt/tests/n1_compat.rs",
2026-06-20T11:21:58.7105850Z               "line": 30
2026-06-20T11:21:58.7106088Z             },
2026-06-20T11:21:58.7106321Z             {
2026-06-20T11:21:58.7106645Z               "path": "crates/spt/tests/n1_compat.rs",
2026-06-20T11:21:58.7106903Z               "line": 73
2026-06-20T11:21:58.7107142Z             }
2026-06-20T11:21:58.7107376Z           ]
2026-06-20T11:21:58.7107609Z         }
2026-06-20T11:21:58.7107851Z       }
2026-06-20T11:21:58.7108075Z     },
2026-06-20T11:21:58.7108313Z     {
2026-06-20T11:21:58.7108667Z       "id": "REQ-HAZARD-HOSTED-LIVENESS-RECONCILE",
2026-06-20T11:21:58.7119975Z       "title": "B2 KEYSTONE: a daemon-hosted (spt-hosted) endpoint's info.json status is RECONCILED to real liveness, not left latched online. The broker exit-waiter (broker.rs:889-910) reaps its in-mem session table + emits ExitEvent but NEVER touches info.json; lifecycle::mark_offline only fires on Psyche teardown — so a dead/exited harness (operator closed the tab) stays status=online forever (is_perch_alive returns ONLINE for daemon-hosted, liveness.rs:80-93). FIX (doyle ruled PULL-PRIMARY — the live-status analog of REQ-HAZARD-ROSTER-GHOST): the livehost reconcile loop (reconcile_once livehost.rs:226-313) queries the broker's live session set (KIND_SESSIONS) each tick and, for any status=online live_agent perch PAST the boot grace whose endpoint has NO live broker session, marks it offline (lifecycle::mark_offline → status=offline → is_perch_alive=false). GATED on spt-hosted (controllable==Some(true)) so a HARNESS-HOSTED relay live agent (api listen, legitimately online with no broker session) is NEVER mis-marked. Crash-robust + self-healing on the next tick (clear-on-event is not crash-robust alone). PUSH (brain ExitEvent→mark_offline) is an OPTIONAL fast-path only if the daemon brain is reliably subscribed to all hosted sessions; correctness rides the pull. Broker stays stateless (ADR-0004 §B — brain owns the info.json write). (v0.12.0)",
2026-06-20T11:21:58.7120399Z       "requiredStages": [
2026-06-20T11:21:58.7120647Z         "impl",
2026-06-20T11:21:58.7120894Z         "unit",
2026-06-20T11:21:58.7121130Z         "int"
2026-06-20T11:21:58.7121359Z       ],
2026-06-20T11:21:58.7121598Z       "stages": {
2026-06-20T11:21:58.7121841Z         "doc": {
2026-06-20T11:21:58.7122099Z           "complete": false,
2026-06-20T11:21:58.7122360Z           "evidence": []
2026-06-20T11:21:58.7122689Z         },
2026-06-20T11:21:58.7122938Z         "impl": {
2026-06-20T11:21:58.7123195Z           "complete": true,
2026-06-20T11:21:58.7123439Z           "evidence": [
2026-06-20T11:21:58.7123675Z             {
2026-06-20T11:21:58.7124031Z               "path": "crates/spt-daemon/src/livehost.rs",
2026-06-20T11:21:58.7124293Z               "line": 510
2026-06-20T11:21:58.7124536Z             },
2026-06-20T11:21:58.7124756Z             {
2026-06-20T11:21:58.7125113Z               "path": "crates/spt-daemon/src/livehost.rs",
2026-06-20T11:21:58.7125362Z               "line": 704
2026-06-20T11:21:58.7125605Z             }
2026-06-20T11:21:58.7125833Z           ]
2026-06-20T11:21:58.7126077Z         },
2026-06-20T11:21:58.7126323Z         "int": {
2026-06-20T11:21:58.7126574Z           "complete": true,
2026-06-20T11:21:58.7126821Z           "evidence": [
2026-06-20T11:21:58.7127056Z             {
2026-06-20T11:21:58.7127408Z               "path": "crates/spt-daemon/src/livehost.rs",
2026-06-20T11:21:58.7127665Z               "line": 1119
2026-06-20T11:21:58.7127905Z             },
2026-06-20T11:21:58.7128138Z             {
2026-06-20T11:21:58.7128501Z               "path": "crates/spt/tests/attach_wedge_e2e.rs",
2026-06-20T11:21:58.7128758Z               "line": 312
2026-06-20T11:21:58.7129071Z             }
2026-06-20T11:21:58.7129296Z           ]
2026-06-20T11:21:58.7129544Z         },
2026-06-20T11:21:58.7129782Z         "unit": {
2026-06-20T11:21:58.7130034Z           "complete": true,
2026-06-20T11:21:58.7130282Z           "evidence": [
2026-06-20T11:21:58.7130507Z             {
2026-06-20T11:21:58.7130855Z               "path": "crates/spt-daemon/src/livehost.rs",
2026-06-20T11:21:58.7131104Z               "line": 821
2026-06-20T11:21:58.7131330Z             }
2026-06-20T11:21:58.7131571Z           ]
2026-06-20T11:21:58.7131811Z         }
2026-06-20T11:21:58.7132044Z       }
2026-06-20T11:21:58.7132276Z     },
2026-06-20T11:21:58.7132496Z     {
2026-06-20T11:21:58.7132778Z       "id": "REQ-HAZARD-ID-CHARSET",
2026-06-20T11:21:58.7133507Z       "title": "Addressable-id charset reserves :/@ delimiters; validated at every creation seam (4.6)",
2026-06-20T11:21:58.7133774Z       "requiredStages": [
2026-06-20T11:21:58.7134023Z         "impl",
2026-06-20T11:21:58.7134259Z         "unit"
2026-06-20T11:21:58.7134495Z       ],
2026-06-20T11:21:58.7134730Z       "stages": {
2026-06-20T11:21:58.7134964Z         "doc": {
2026-06-20T11:21:58.7135221Z           "complete": true,
2026-06-20T11:21:58.7135472Z           "evidence": [
2026-06-20T11:21:58.7135712Z             {
2026-06-20T11:21:58.7136021Z               "path": "docs/KNOWN-HAZARDS.md",
2026-06-20T11:21:58.7136275Z               "line": 133
2026-06-20T11:21:58.7136509Z             }
2026-06-20T11:21:58.7136745Z           ]
2026-06-20T11:21:58.7136982Z         },
2026-06-20T11:21:58.7137225Z         "impl": {
2026-06-20T11:21:58.7137487Z           "complete": true,
2026-06-20T11:21:58.7137730Z           "evidence": [
2026-06-20T11:21:58.7137969Z             {
2026-06-20T11:21:58.7138293Z               "path": "crates/spt-msg/src/ready.rs",
2026-06-20T11:21:58.7138541Z               "line": 65
2026-06-20T11:21:58.7138775Z             },
2026-06-20T11:21:58.7139100Z             {
2026-06-20T11:21:58.7139414Z               "path": "crates/spt-proto/src/id.rs",
2026-06-20T11:21:58.7139664Z               "line": 17
2026-06-20T11:21:58.7140027Z             },
2026-06-20T11:21:58.7140265Z             {
2026-06-20T11:21:58.7140618Z               "path": "crates/spt-store/src/shellinfo.rs",
2026-06-20T11:21:58.7140875Z               "line": 146
2026-06-20T11:21:58.7141114Z             },
2026-06-20T11:21:58.7141354Z             {
2026-06-20T11:21:58.7141679Z               "path": "crates/spt/src/api/startup.rs",
2026-06-20T11:21:58.7141929Z               "line": 310
2026-06-20T11:21:58.7142165Z             },
2026-06-20T11:21:58.7142408Z             {
2026-06-20T11:21:58.7142728Z               "path": "crates/spt/src/api/startup.rs",
2026-06-20T11:21:58.7142985Z               "line": 441
2026-06-20T11:21:58.7143338Z             },
2026-06-20T11:21:58.7143572Z             {
2026-06-20T11:21:58.7143902Z               "path": "crates/spt/src/api/worker.rs",
2026-06-20T11:21:58.7144149Z               "line": 32
2026-06-20T11:21:58.7144392Z             },
2026-06-20T11:21:58.7145151Z             {
2026-06-20T11:21:58.7145476Z               "path": "crates/spt/src/cli.rs",
2026-06-20T11:21:58.7145747Z               "line": 1283
2026-06-20T11:21:58.7145985Z             },
2026-06-20T11:21:58.7146229Z             {
2026-06-20T11:21:58.7146529Z               "path": "crates/spt/src/cli.rs",
2026-06-20T11:21:58.7146788Z               "line": 6161
2026-06-20T11:21:58.7147016Z             },
2026-06-20T11:21:58.7147253Z             {
2026-06-20T11:21:58.7147546Z               "path": "crates/spt/src/cli.rs",
2026-06-20T11:21:58.7147795Z               "line": 6443
2026-06-20T11:21:58.7148043Z             }
2026-06-20T11:21:58.7148275Z           ]
2026-06-20T11:21:58.7148515Z         },
2026-06-20T11:21:58.7148767Z         "int": {
2026-06-20T11:21:58.7149120Z           "complete": false,
2026-06-20T11:21:58.7149387Z           "evidence": []
2026-06-20T11:21:58.7149617Z         },
2026-06-20T11:21:58.7149863Z         "unit": {
2026-06-20T11:21:58.7150111Z           "complete": true,
2026-06-20T11:21:58.7150369Z           "evidence": [
2026-06-20T11:21:58.7150606Z             {
2026-06-20T11:21:58.7150922Z               "path": "crates/spt-proto/src/id.rs",
2026-06-20T11:21:58.7151174Z               "line": 94
2026-06-20T11:21:58.7151408Z             },
2026-06-20T11:21:58.7151651Z             {
2026-06-20T11:21:58.7151957Z               "path": "crates/spt-proto/src/id.rs",
2026-06-20T11:21:58.7152210Z               "line": 111
2026-06-20T11:21:58.7152450Z             },
2026-06-20T11:21:58.7152677Z             {
2026-06-20T11:21:58.7152983Z               "path": "crates/spt-proto/src/id.rs",
2026-06-20T11:21:58.7153231Z               "line": 124
2026-06-20T11:21:58.7153469Z             },
2026-06-20T11:21:58.7153707Z             {
2026-06-20T11:21:58.7154017Z               "path": "crates/spt-proto/src/id.rs",
2026-06-20T11:21:58.7154266Z               "line": 134
2026-06-20T11:21:58.7154504Z             },
2026-06-20T11:21:58.7154743Z             {
2026-06-20T11:21:58.7155053Z               "path": "crates/spt-proto/src/id.rs",
2026-06-20T11:21:58.7155312Z               "line": 144
2026-06-20T11:21:58.7155544Z             },
2026-06-20T11:21:58.7155783Z             {
2026-06-20T11:21:58.7156098Z               "path": "crates/spt-proto/src/id.rs",
2026-06-20T11:21:58.7156356Z               "line": 156
2026-06-20T11:21:58.7156588Z             },
2026-06-20T11:21:58.7156813Z             {
2026-06-20T11:21:58.7157189Z               "path": "crates/spt-store/src/contextstore.rs",
2026-06-20T11:21:58.7157446Z               "line": 746
2026-06-20T11:21:58.7157672Z             },
2026-06-20T11:21:58.7157913Z             {
2026-06-20T11:21:58.7158259Z               "path": "crates/spt-store/src/shellinfo.rs",
2026-06-20T11:21:58.7158525Z               "line": 309
2026-06-20T11:21:58.7158755Z             }
2026-06-20T11:21:58.7159079Z           ]
2026-06-20T11:21:58.7159318Z         }
2026-06-20T11:21:58.7159552Z       }
2026-06-20T11:21:58.7159789Z     },
2026-06-20T11:21:58.7160013Z     {
2026-06-20T11:21:58.7160309Z       "id": "REQ-HAZARD-INBOX-NO-DOUBLE",
2026-06-20T11:21:58.7160828Z       "title": "No double-delivery via legacy inbox (4.5)",
2026-06-20T11:21:58.7161085Z       "requiredStages": [
2026-06-20T11:21:58.7161319Z         "impl",
2026-06-20T11:21:58.7161563Z         "unit"
2026-06-20T11:21:58.7161801Z       ],
2026-06-20T11:21:58.7162034Z       "stages": {
2026-06-20T11:21:58.7162278Z         "doc": {
2026-06-20T11:21:58.7162536Z           "complete": false,
2026-06-20T11:21:58.7162789Z           "evidence": []
2026-06-20T11:21:58.7163015Z         },
2026-06-20T11:21:58.7163261Z         "impl": {
2026-06-20T11:21:58.7163529Z           "complete": true,
2026-06-20T11:21:58.7163777Z           "evidence": [
2026-06-20T11:21:58.7164115Z             {
2026-06-20T11:21:58.7164444Z               "path": "crates/spt-msg/src/deliver.rs",
2026-06-20T11:21:58.7164692Z               "line": 128
2026-06-20T11:21:58.7164925Z             }
2026-06-20T11:21:58.7165159Z           ]
2026-06-20T11:21:58.7165403Z         },
2026-06-20T11:21:58.7165656Z         "int": {
2026-06-20T11:21:58.7165926Z           "complete": false,
2026-06-20T11:21:58.7166185Z           "evidence": []
2026-06-20T11:21:58.7166424Z         },
2026-06-20T11:21:58.7166649Z         "unit": {
2026-06-20T11:21:58.7166921Z           "complete": true,
2026-06-20T11:21:58.7167172Z           "evidence": [
2026-06-20T11:21:58.7167406Z             {
2026-06-20T11:21:58.7167744Z               "path": "crates/spt-msg/src/deliver.rs",
2026-06-20T11:21:58.7167997Z               "line": 205
2026-06-20T11:21:58.7168228Z             }
2026-06-20T11:21:58.7168454Z           ]
2026-06-20T11:21:58.7168690Z         }
2026-06-20T11:21:58.7168920Z       }
2026-06-20T11:21:58.7169235Z     },
2026-06-20T11:21:58.7169463Z     {
2026-06-20T11:21:58.7169778Z       "id": "REQ-HAZARD-INFO-JSON-TORN-READ",
2026-06-20T11:21:58.7170216Z       "title": "State-file reads tolerate concurrent writes (1.2)",
2026-06-20T11:21:58.7170489Z       "requiredStages": [
2026-06-20T11:21:58.7170727Z         "impl",
2026-06-20T11:21:58.7170975Z         "unit"
2026-06-20T11:21:58.7171207Z       ],
2026-06-20T11:21:58.7171451Z       "stages": {
2026-06-20T11:21:58.7171688Z         "doc": {
2026-06-20T11:21:58.7171950Z           "complete": false,
2026-06-20T11:21:58.7172199Z           "evidence": []
2026-06-20T11:21:58.7172438Z         },
2026-06-20T11:21:58.7172677Z         "impl": {
2026-06-20T11:21:58.7172943Z           "complete": true,
2026-06-20T11:21:58.7173191Z           "evidence": [
2026-06-20T11:21:58.7173433Z             {
2026-06-20T11:21:58.7173774Z               "path": "crates/spt-store/src/info.rs",
2026-06-20T11:21:58.7174027Z               "line": 367
2026-06-20T11:21:58.7174270Z             },
2026-06-20T11:21:58.7174512Z             {
2026-06-20T11:21:58.7174822Z               "path": "crates/spt-store/src/info.rs",
2026-06-20T11:21:58.7175071Z               "line": 378
2026-06-20T11:21:58.7175305Z             },
2026-06-20T11:21:58.7175544Z             {
2026-06-20T11:21:58.7175859Z               "path": "crates/spt-store/src/info.rs",
2026-06-20T11:21:58.7176125Z               "line": 396
2026-06-20T11:21:58.7176371Z             }
2026-06-20T11:21:58.7176609Z           ]
2026-06-20T11:21:58.7176841Z         },
2026-06-20T11:21:58.7177084Z         "int": {
2026-06-20T11:21:58.7177346Z           "complete": false,
2026-06-20T11:21:58.7177595Z           "evidence": []
2026-06-20T11:21:58.7177834Z         },
2026-06-20T11:21:58.7178081Z         "unit": {
2026-06-20T11:21:58.7178343Z           "complete": true,
2026-06-20T11:21:58.7178595Z           "evidence": [
2026-06-20T11:21:58.7178830Z             {
2026-06-20T11:21:58.7179231Z               "path": "crates/spt-store/src/info.rs",
2026-06-20T11:21:58.7179485Z               "line": 420
2026-06-20T11:21:58.7179733Z             },
2026-06-20T11:21:58.7179970Z             {
2026-06-20T11:21:58.7180294Z               "path": "crates/spt-store/src/info.rs",
2026-06-20T11:21:58.7180556Z               "line": 441
2026-06-20T11:21:58.7180786Z             },
2026-06-20T11:21:58.7181162Z             {
2026-06-20T11:21:58.7181486Z               "path": "crates/spt-store/src/info.rs",
2026-06-20T11:21:58.7181744Z               "line": 811
2026-06-20T11:21:58.7181996Z             },
2026-06-20T11:21:58.7182225Z             {
2026-06-20T11:21:58.7182554Z               "path": "crates/spt-store/src/info.rs",
2026-06-20T11:21:58.7182802Z               "line": 822
2026-06-20T11:21:58.7183045Z             },
2026-06-20T11:21:58.7183284Z             {
2026-06-20T11:21:58.7183608Z               "path": "crates/spt-store/src/info.rs",
2026-06-20T11:21:58.7183866Z               "line": 835
2026-06-20T11:21:58.7184098Z             }
2026-06-20T11:21:58.7184443Z           ]
2026-06-20T11:21:58.7184682Z         }
2026-06-20T11:21:58.7184916Z       }
2026-06-20T11:21:58.7185145Z     },
2026-06-20T11:21:58.7185377Z     {
2026-06-20T11:21:58.7185721Z       "id": "REQ-HAZARD-INJECT-CONTROL-COEXIST",
2026-06-20T11:21:58.7206394Z       "title": "SPINE INVARIANT (v0.13.0 keystone): the broker must accept INJECTED keystrokes into an spt-hosted PTY (the v0.11.0 raw direct-inject today; the ADR-0022 translation-binary choreography tomorrow) WHILE a live `spt rc` controller is attached to the SAME PTY, without (a) the operator losing control, (b) the endpoint latching ONLINE+CONTROLLED, or (c) the broker wedging. The injection inlet is PERMANENT — spt-claude-code requires keystroke injection — so this is root-caused + fixed at the PTY-injection layer, IN STEP with the ADR-0022 delivery redesign that formalizes the inlet. REOPENS the wedge facet of REQ-HAZARD-ATTACH-WEDGE: the v0.12.1 prove-don't-change covered only DEAD-CHILD backpressure, NOT the injection trigger (operator's signal — one injected keystroke succeeds, the next wedges → the single-threaded broker parks on a blocking PTY/loopback write after injection-induced harness output). REPRO-FIRST on the real dummy-harness fixture (NO theory): instrument to nail the exact blocking call before any fix. Fix candidates: non-blocking/fail-fast PTY write, split input/output, bounded-evicting. Mechanism shared with W2 — spt-core owns EVERY PTY write and applies an injected sequence ATOMICALLY (controller input buffered during the sequence, flushed after) so a stash/restore can't be clobbered. CONFIRMED ROOT (doyle /diagnose 2026-06-19, code-grounded): Broker::append (broker.rs:205-227) fans each live output chunk to the CONTROLLER on a SYNCHRONOUS BLOCKING write_frame held inline in the session's drain thread (the 'authoritative, advances delivered_through' path, D4-1), while VIEWERS use a dedicated writer thread + bounded evicting sync_channel (add_viewer:273 / viewer_writer) that can never stall the drain. So a slow/backed-up controller socket — or the full 64KB loopback duplex (the ATTACH-WEDGE buffer) — BLOCKS the drain thread → output stalls → keystroke echoes stall (PERCEIVED input lag) → unrecoverable wedge when the consumer never drains. TRIGGERS ON NORMAL INTERACTIVE rc USE under heavy harness output (TUI redraw), NOT only message injection — same root, wider repro. FIX DIRECTION: move controller delivery off the drain thread onto a dedicated writer (the viewer_writer pattern) BUT preserve the authoritative cursor — block the WRITER thread (not the drain), bound the wedge (deadline → detach/mark-gone, never park forever), never silently evict the operator's authoritative view. (v0.13.0)",
2026-06-20T11:21:58.7206718Z       "requiredStages": [
2026-06-20T11:21:58.7206999Z         "impl",
2026-06-20T11:21:58.7207244Z         "unit",
2026-06-20T11:21:58.7207475Z         "int"
2026-06-20T11:21:58.7207709Z       ],
2026-06-20T11:21:58.7207939Z       "stages": {
2026-06-20T11:21:58.7208175Z         "doc": {
2026-06-20T11:21:58.7208449Z           "complete": false,
2026-06-20T11:21:58.7208707Z           "evidence": []
2026-06-20T11:21:58.7209017Z         },
2026-06-20T11:21:58.7209261Z         "impl": {
2026-06-20T11:21:58.7209523Z           "complete": true,
2026-06-20T11:21:58.7209776Z           "evidence": [
2026-06-20T11:21:58.7210014Z             {
2026-06-20T11:21:58.7210487Z               "path": "crates/spt-daemon/src/broker.rs",
2026-06-20T11:21:58.7210747Z               "line": 296
2026-06-20T11:21:58.7210978Z             },
2026-06-20T11:21:58.7211218Z             {
2026-06-20T11:21:58.7211570Z               "path": "crates/spt-daemon/src/broker.rs",
2026-06-20T11:21:58.7211822Z               "line": 702
2026-06-20T11:21:58.7212062Z             },
2026-06-20T11:21:58.7212295Z             {
2026-06-20T11:21:58.7212633Z               "path": "crates/spt-daemon/src/broker.rs",
2026-06-20T11:21:58.7212890Z               "line": 940
2026-06-20T11:21:58.7213124Z             }
2026-06-20T11:21:58.7213350Z           ]
2026-06-20T11:21:58.7213677Z         },
2026-06-20T11:21:58.7213924Z         "int": {
2026-06-20T11:21:58.7214181Z           "complete": true,
2026-06-20T11:21:58.7214439Z           "evidence": [
2026-06-20T11:21:58.7214678Z             {
2026-06-20T11:21:58.7215106Z               "path": "crates/spt-daemon/tests/inject_control_wedge.rs",
2026-06-20T11:21:58.7215373Z               "line": 222
2026-06-20T11:21:58.7215609Z             },
2026-06-20T11:21:58.7215850Z             {
2026-06-20T11:21:58.7216277Z               "path": "crates/spt-daemon/tests/inject_control_wedge.rs",
2026-06-20T11:21:58.7216539Z               "line": 348
2026-06-20T11:21:58.7216776Z             }
2026-06-20T11:21:58.7217005Z           ]
2026-06-20T11:21:58.7217240Z         },
2026-06-20T11:21:58.7217469Z         "unit": {
2026-06-20T11:21:58.7217740Z           "complete": true,
2026-06-20T11:21:58.7217998Z           "evidence": [
2026-06-20T11:21:58.7218226Z             {
2026-06-20T11:21:58.7218569Z               "path": "crates/spt-daemon/src/broker.rs",
2026-06-20T11:21:58.7218826Z               "line": 2236
2026-06-20T11:21:58.7219149Z             },
2026-06-20T11:21:58.7219387Z             {
2026-06-20T11:21:58.7219726Z               "path": "crates/spt-daemon/src/broker.rs",
2026-06-20T11:21:58.7219978Z               "line": 2294
2026-06-20T11:21:58.7220207Z             }
2026-06-20T11:21:58.7220455Z           ]
2026-06-20T11:21:58.7220690Z         }
2026-06-20T11:21:58.7220917Z       }
2026-06-20T11:21:58.7221141Z     },
2026-06-20T11:21:58.7221374Z     {
2026-06-20T11:21:58.7221725Z       "id": "REQ-HAZARD-INPUT-ACK-BACKPRESSURE",
2026-06-20T11:21:58.7241180Z       "title": "A FLOOD of operator input on one brain↔broker connection deadlocks the broker PERMANENTLY (entire broker — no new/existing attach; the controller stays latched because the per-conn handler can't process the detach). ROOT (doyle /diagnose, code-grounded + HITL capture, the v0.13.0 P1 ctrl+V re-open): `serve_attach` processes a whole `NetStreamData` batch of N operator `Input` records in its inner `for rec in decoder.push()` loop, calling `brain.send_effect(op_id, &bytes)` N times WITHOUT returning to `read_event()` — so the brain writes N `KIND_INPUT` frames back-to-back and drains nothing. The broker's single-threaded per-conn handler answers EACH with `send_frame(applied_envelope)` on the SAME conn (B5 exactly-once ack, KNOWN-HAZARDS 7.2). With the brain not reading, the broker→brain return direction fills (~10 frames = the IPC pipe buffer) → `send_frame` BLOCKS → the handler stops reading → the brain's writes block too → mutual full-duplex DEADLOCK. Capture pinned it: 11 input frames, write_input 11/11 (P0 holds — the PTY write is fine), ack send START=11 / END=10 (frame #11's applied-ack never returns). Same class as the v0.12.1 L0 two-conn split. Windows Terminal's ctrl+V paste accelerator was the trigger (injects the clipboard as a char-by-char key flood) but the deadlock is generic to ANY input flood, NOT ctrl+V-specific and NOT a P0 (PTY-write) or W1 (output-drain) regression. The applied-ack is load-bearing ONLY for `shellchan` (one-at-a-time spool delivery WAITS on `BrokerEvent::Applied`); `serve_attach` DISCARDS it (the operator/rc path is fire-and-forward, op_id for dedup only, never gates on the ack). FIX (doyle-approved): CONDITIONAL ACK — `InputReq` gains `ack: bool` (serde default = true, N-1-safe: an older brain's input still acks = today's behavior). `serve_attach`'s operator path calls `send_effect_no_ack` (ack=false) → `dispatch_input` writes NO applied frame → the per-conn handler never writes back while servicing the flood → it always drains → no deadlock (cures ANY input flood). `shellchan` keeps `send_effect` (ack=true) and its `Applied`-wait. Exactly-once PRESERVED: the broker still dedups by (session, op_id) at the applied-set regardless of the ack. N-1 caveat: an OLD resident broker (self-update window) ignores `ack=false` → still acks → the deadlock persists until a broker restart (inherent KNOWN-HAZARDS 7.9 broker-resident-wire-change class). (v0.13.0)",
2026-06-20T11:21:58.7241709Z       "requiredStages": [
2026-06-20T11:21:58.7241942Z         "doc",
2026-06-20T11:21:58.7242186Z         "impl",
2026-06-20T11:21:58.7242408Z         "unit",
2026-06-20T11:21:58.7242654Z         "int"
2026-06-20T11:21:58.7242888Z       ],
2026-06-20T11:21:58.7243136Z       "stages": {
2026-06-20T11:21:58.7243374Z         "doc": {
2026-06-20T11:21:58.7243640Z           "complete": true,
2026-06-20T11:21:58.7243894Z           "evidence": [
2026-06-20T11:21:58.7244123Z             {
2026-06-20T11:21:58.7244433Z               "path": "docs/KNOWN-HAZARDS.md",
2026-06-20T11:21:58.7244687Z               "line": 454
2026-06-20T11:21:58.7244924Z             }
2026-06-20T11:21:58.7245157Z           ]
2026-06-20T11:21:58.7245391Z         },
2026-06-20T11:21:58.7245648Z         "impl": {
2026-06-20T11:21:58.7245910Z           "complete": true,
2026-06-20T11:21:58.7246167Z           "evidence": [
2026-06-20T11:21:58.7246401Z             {
2026-06-20T11:21:58.7246749Z               "path": "crates/spt-daemon/src/attach.rs",
2026-06-20T11:21:58.7247007Z               "line": 203
2026-06-20T11:21:58.7247251Z             },
2026-06-20T11:21:58.7247492Z             {
2026-06-20T11:21:58.7247823Z               "path": "crates/spt-daemon/src/brain.rs",
2026-06-20T11:21:58.7248085Z               "line": 468
2026-06-20T11:21:58.7248329Z             },
2026-06-20T11:21:58.7248573Z             {
2026-06-20T11:21:58.7248902Z               "path": "crates/spt-daemon/src/broker.rs",
2026-06-20T11:21:58.7249307Z               "line": 1650
2026-06-20T11:21:58.7249550Z             },
2026-06-20T11:21:58.7249784Z             {
2026-06-20T11:21:58.7250113Z               "path": "crates/spt-daemon/src/msg.rs",
2026-06-20T11:21:58.7250363Z               "line": 331
2026-06-20T11:21:58.7250604Z             }
2026-06-20T11:21:58.7250834Z           ]
2026-06-20T11:21:58.7251072Z         },
2026-06-20T11:21:58.7251320Z         "int": {
2026-06-20T11:21:58.7251568Z           "complete": true,
2026-06-20T11:21:58.7251825Z           "evidence": [
2026-06-20T11:21:58.7252065Z             {
2026-06-20T11:21:58.7252413Z               "path": "crates/spt-daemon/tests/broker.rs",
2026-06-20T11:21:58.7252665Z               "line": 720
2026-06-20T11:21:58.7252902Z             },
2026-06-20T11:21:58.7253147Z             {
2026-06-20T11:21:58.7253486Z               "path": "crates/spt-daemon/tests/broker.rs",
2026-06-20T11:21:58.7253749Z               "line": 837
2026-06-20T11:21:58.7253983Z             },
2026-06-20T11:21:58.7254220Z             {
2026-06-20T11:21:58.7254627Z               "path": "crates/spt-daemon/tests/input_ack_deadlock.rs",
2026-06-20T11:21:58.7254884Z               "line": 266
2026-06-20T11:21:58.7255121Z             }
2026-06-20T11:21:58.7255350Z           ]
2026-06-20T11:21:58.7255590Z         },
2026-06-20T11:21:58.7255826Z         "unit": {
2026-06-20T11:21:58.7256093Z           "complete": true,
2026-06-20T11:21:58.7256332Z           "evidence": [
2026-06-20T11:21:58.7256556Z             {
2026-06-20T11:21:58.7256890Z               "path": "crates/spt-daemon/src/msg.rs",
2026-06-20T11:21:58.7257138Z               "line": 985
2026-06-20T11:21:58.7257376Z             },
2026-06-20T11:21:58.7257614Z             {
2026-06-20T11:21:58.7257929Z               "path": "crates/spt-daemon/src/msg.rs",
2026-06-20T11:21:58.7258176Z               "line": 1019
2026-06-20T11:21:58.7258532Z             }
2026-06-20T11:21:58.7258779Z           ]
2026-06-20T11:21:58.7259104Z         }
2026-06-20T11:21:58.7259347Z       }
2026-06-20T11:21:58.7259576Z     },
2026-06-20T11:21:58.7259805Z     {
2026-06-20T11:21:58.7260115Z       "id": "REQ-HAZARD-INSTANT-UNDERFLOW",
2026-06-20T11:21:58.7261818Z       "title": "Scheduling never subtracts a Duration from Instant::now() (underflow-panics on a host booted more recently than the offset); 'due now / never run' is Option<Instant>=None gated on forward duration_since only (5.9)",
2026-06-20T11:21:58.7262091Z       "requiredStages": [
2026-06-20T11:21:58.7262329Z         "impl",
2026-06-20T11:21:58.7262695Z         "unit"
2026-06-20T11:21:58.7262935Z       ],
2026-06-20T11:21:58.7263187Z       "stages": {
2026-06-20T11:21:58.7263424Z         "doc": {
2026-06-20T11:21:58.7263698Z           "complete": false,
2026-06-20T11:21:58.7263961Z           "evidence": []
2026-06-20T11:21:58.7264194Z         },
2026-06-20T11:21:58.7264446Z         "impl": {
2026-06-20T11:21:58.7264708Z           "complete": true,
2026-06-20T11:21:58.7264966Z           "evidence": [
2026-06-20T11:21:58.7265201Z             {
2026-06-20T11:21:58.7265544Z               "path": "crates/spt-daemon/src/pump/mod.rs",
2026-06-20T11:21:58.7265802Z               "line": 759
2026-06-20T11:21:58.7266040Z             }
2026-06-20T11:21:58.7266272Z           ]
2026-06-20T11:21:58.7266497Z         },
2026-06-20T11:21:58.7266744Z         "int": {
2026-06-20T11:21:58.7267005Z           "complete": false,
2026-06-20T11:21:58.7267259Z           "evidence": []
2026-06-20T11:21:58.7267498Z         },
2026-06-20T11:21:58.7267732Z         "unit": {
2026-06-20T11:21:58.7267999Z           "complete": true,
2026-06-20T11:21:58.7268236Z           "evidence": [
2026-06-20T11:21:58.7268479Z             {
2026-06-20T11:21:58.7268839Z               "path": "crates/spt-daemon/src/pump/mod.rs",
2026-06-20T11:21:58.7269163Z               "line": 873
2026-06-20T11:21:58.7269412Z             }
2026-06-20T11:21:58.7269655Z           ]
2026-06-20T11:21:58.7269897Z         }
2026-06-20T11:21:58.7270131Z       }
2026-06-20T11:21:58.7270369Z     },
2026-06-20T11:21:58.7270609Z     {
2026-06-20T11:21:58.7270966Z       "id": "REQ-HAZARD-LIVEHOST-BOOT-LIVENESS-GATE",
2026-06-20T11:21:58.7277480Z       "title": "B5: `spt daemon start` does NOT revive phantom Psyches for dead-but-online-latched perches. Today reconcile_once (livehost.rs:285) spawns a Psyche per status=online live_agent perch at boot WITHOUT verifying the harness child / {id}-psyche is actually alive — so a Cold start after an unclean stop revives N psyches for N dead-but-latched perches (3 psyches for 3 dead perches). FIX: gate the boot psyche-spawn on real child-liveness — a perch with NO live broker session (the B2 reconcile signal) is marked OFFLINE at boot instead of hosted, so a dead-harness perch is never revived. Shares the B2 reconcile loop (this is its boot-gate arm); composes with B2's honest latch. Also closes wall-a's psyche_host_error gap (residency-confirm does not run at boot tick-1, livehost.rs:395-441 / 257-263). (v0.12.0)",
2026-06-20T11:21:58.7277772Z       "requiredStages": [
2026-06-20T11:21:58.7278015Z         "impl",
2026-06-20T11:21:58.7278258Z         "unit",
2026-06-20T11:21:58.7278496Z         "int"
2026-06-20T11:21:58.7278734Z       ],
2026-06-20T11:21:58.7279058Z       "stages": {
2026-06-20T11:21:58.7279301Z         "doc": {
2026-06-20T11:21:58.7279571Z           "complete": false,
2026-06-20T11:21:58.7279823Z           "evidence": []
2026-06-20T11:21:58.7280066Z         },
2026-06-20T11:21:58.7280305Z         "impl": {
2026-06-20T11:21:58.7280572Z           "complete": true,
2026-06-20T11:21:58.7280830Z           "evidence": [
2026-06-20T11:21:58.7281067Z             {
2026-06-20T11:21:58.7281426Z               "path": "crates/spt-daemon/src/livehost.rs",
2026-06-20T11:21:58.7281683Z               "line": 705
2026-06-20T11:21:58.7281930Z             }
2026-06-20T11:21:58.7282163Z           ]
2026-06-20T11:21:58.7282505Z         },
2026-06-20T11:21:58.7282748Z         "int": {
2026-06-20T11:21:58.7283009Z           "complete": true,
2026-06-20T11:21:58.7283277Z           "evidence": [
2026-06-20T11:21:58.7283506Z             {
2026-06-20T11:21:58.7283902Z               "path": "crates/spt/tests/livehost_bootgate_e2e.rs",
2026-06-20T11:21:58.7284154Z               "line": 24
2026-06-20T11:21:58.7284384Z             }
2026-06-20T11:21:58.7284611Z           ]
2026-06-20T11:21:58.7284842Z         },
2026-06-20T11:21:58.7285081Z         "unit": {
2026-06-20T11:21:58.7285344Z           "complete": true,
2026-06-20T11:21:58.7285595Z           "evidence": [
2026-06-20T11:21:58.7285834Z             {
2026-06-20T11:21:58.7286288Z               "path": "crates/spt-daemon/src/livehost.rs",
2026-06-20T11:21:58.7286549Z               "line": 918
2026-06-20T11:21:58.7286783Z             }
2026-06-20T11:21:58.7287022Z           ]
2026-06-20T11:21:58.7287247Z         }
2026-06-20T11:21:58.7287492Z       }
2026-06-20T11:21:58.7287716Z     },
2026-06-20T11:21:58.7287960Z     {
2026-06-20T11:21:58.7288279Z       "id": "REQ-HAZARD-LIVEHOST-BOOT-RACE",
2026-06-20T11:21:58.7298244Z       "title": "The brain's daemon-hosted Psyche lifecycle surfaces a host-FAILURE on the live perch (harness-diagnosable) and runs net-INDEPENDENTLY. When reconcile_once→host_one→spawn_psyche fails for a state=live_agent+status=online endpoint (e.g. the adapter's psyche binary absent from its install dir, REQ-INSTALL-11), the failure MUST be written to the perch info.json as a CURRENT-STATE field (reason + ts + attempt count; overwritten each 5s retry, CLEARED on successful host) and surfaced by `spt endpoint list`/status — never left as an eprintln on the brain's invisible stderr where a harness reading only perch state is blind. status=online stays authoritative (agent reachable; only the Psyche is missing — brain-restart rehydrate legitimately has online-without-Psyche windows), so this is a SEPARATE psyche-host-health field, never a status de-stamp. Net-independence is a locked-in invariant: spawn_live_host (brainproc.rs:230) reaches the reconcile and hosts the Psyche on a net-less/unpaired/peer-pump-STALLED node, proven by a REAL detached-daemon E2E (real broker→brain-child, real api seed+listen, real install-dir psyche binary). spt-core SURFACES the failure; the adapter owns fixing its packaging.",
2026-06-20T11:21:58.7298525Z       "requiredStages": [
2026-06-20T11:21:58.7298764Z         "impl",
2026-06-20T11:21:58.7299088Z         "unit",
2026-06-20T11:21:58.7299330Z         "int"
2026-06-20T11:21:58.7299574Z       ],
2026-06-20T11:21:58.7299812Z       "stages": {
2026-06-20T11:21:58.7300057Z         "doc": {
2026-06-20T11:21:58.7300326Z           "complete": false,
2026-06-20T11:21:58.7300586Z           "evidence": []
2026-06-20T11:21:58.7300824Z         },
2026-06-20T11:21:58.7301058Z         "impl": {
2026-06-20T11:21:58.7301316Z           "complete": true,
2026-06-20T11:21:58.7301568Z           "evidence": [
2026-06-20T11:21:58.7301802Z             {
2026-06-20T11:21:58.7302150Z               "path": "crates/spt-daemon/src/livehost.rs",
2026-06-20T11:21:58.7302412Z               "line": 391
2026-06-20T11:21:58.7302633Z             },
2026-06-20T11:21:58.7302876Z             {
2026-06-20T11:21:58.7303193Z               "path": "crates/spt-store/src/info.rs",
2026-06-20T11:21:58.7303453Z               "line": 343
2026-06-20T11:21:58.7303696Z             },
2026-06-20T11:21:58.7303930Z             {
2026-06-20T11:21:58.7304236Z               "path": "crates/spt/src/cli.rs",
2026-06-20T11:21:58.7304488Z               "line": 1750
2026-06-20T11:21:58.7304726Z             },
2026-06-20T11:21:58.7304960Z             {
2026-06-20T11:21:58.7305265Z               "path": "crates/spt/src/cli.rs",
2026-06-20T11:21:58.7305514Z               "line": 3191
2026-06-20T11:21:58.7305740Z             }
2026-06-20T11:21:58.7305986Z           ]
2026-06-20T11:21:58.7306211Z         },
2026-06-20T11:21:58.7306459Z         "int": {
2026-06-20T11:21:58.7306730Z           "complete": true,
2026-06-20T11:21:58.7307093Z           "evidence": [
2026-06-20T11:21:58.7307326Z             {
2026-06-20T11:21:58.7307719Z               "path": "crates/spt/tests/livehost_bootrace_e2e.rs",
2026-06-20T11:21:58.7311929Z               "line": 353
2026-06-20T11:21:58.7312191Z             },
2026-06-20T11:21:58.7312438Z             {
2026-06-20T11:21:58.7312883Z               "path": "crates/spt/tests/livehost_psyche_fail_e2e.rs",
2026-06-20T11:21:58.7313140Z               "line": 23
2026-06-20T11:21:58.7313382Z             }
2026-06-20T11:21:58.7313620Z           ]
2026-06-20T11:21:58.7313858Z         },
2026-06-20T11:21:58.7314104Z         "unit": {
2026-06-20T11:21:58.7314528Z           "complete": true,
2026-06-20T11:21:58.7314796Z           "evidence": [
2026-06-20T11:21:58.7315024Z             {
2026-06-20T11:21:58.7315368Z               "path": "crates/spt-store/src/info.rs",
2026-06-20T11:21:58.7315606Z               "line": 743
2026-06-20T11:21:58.7315853Z             },
2026-06-20T11:21:58.7316102Z             {
2026-06-20T11:21:58.7316401Z               "path": "crates/spt/src/cli.rs",
2026-06-20T11:21:58.7316656Z               "line": 7863
2026-06-20T11:21:58.7316903Z             }
2026-06-20T11:21:58.7317138Z           ]
2026-06-20T11:21:58.7317372Z         }
2026-06-20T11:21:58.7317605Z       }
2026-06-20T11:21:58.7317834Z     },
2026-06-20T11:21:58.7318072Z     {
2026-06-20T11:21:58.7318406Z       "id": "REQ-HAZARD-LIVEHOST-NONRESIDENT",
2026-06-20T11:21:58.7327589Z       "title": "A daemon-hosted Psyche that spawns then EXITS IMMEDIATELY is a host failure, surfaced like a spawn failure (closes the v0.8.1 residual masking): the REQ-HAZARD-LIVEHOST-BOOT-RACE signal stamps `psyche_host_error` only when `spawn_psyche` returns Err, NOT when the detached spawn() returns Ok but the child dies within moments (e.g. a bad-argv child exiting 2 — the F-009 case). That leaves the residual 'online + no Psyche + no cause' gap: the nested `{id}-psyche` info.json is written status=online with a real-but-DEAD pid and the PARENT perch carries NO psyche_host_error (perri's F-010: tasklist showed 0 host procs across the window while info.json read online). The host MUST confirm RESIDENCY — a hosted child not alive (or whose `{id}-psyche` perch never re-registers / has a dead pid) within N seconds of spawn is treated as a host failure: stamp the parent perch `psyche_host_error{reason:\"host not resident within <n>s (psyche perch missing/dead pid)\"}` (and do not leave a phantom online nested perch). Closes the last masking gap the v0.8.1 fix left open. perri's F-010 (v0.8.1 dogfood). Sibling of REQ-HAZARD-LIVEHOST-BOOT-RACE.",
2026-06-20T11:21:58.7327890Z       "requiredStages": [
2026-06-20T11:21:58.7328151Z         "impl",
2026-06-20T11:21:58.7328389Z         "unit",
2026-06-20T11:21:58.7328623Z         "int"
2026-06-20T11:21:58.7328858Z       ],
2026-06-20T11:21:58.7329182Z       "stages": {
2026-06-20T11:21:58.7329420Z         "doc": {
2026-06-20T11:21:58.7329685Z           "complete": false,
2026-06-20T11:21:58.7329962Z           "evidence": []
2026-06-20T11:21:58.7330196Z         },
2026-06-20T11:21:58.7330445Z         "impl": {
2026-06-20T11:21:58.7330711Z           "complete": true,
2026-06-20T11:21:58.7330958Z           "evidence": [
2026-06-20T11:21:58.7331197Z             {
2026-06-20T11:21:58.7331549Z               "path": "crates/spt-daemon/src/livehost.rs",
2026-06-20T11:21:58.7331808Z               "line": 64
2026-06-20T11:21:58.7332040Z             },
2026-06-20T11:21:58.7332285Z             {
2026-06-20T11:21:58.7332643Z               "path": "crates/spt-daemon/src/livehost.rs",
2026-06-20T11:21:58.7332895Z               "line": 78
2026-06-20T11:21:58.7333135Z             },
2026-06-20T11:21:58.7333373Z             {
2026-06-20T11:21:58.7333721Z               "path": "crates/spt-daemon/src/livehost.rs",
2026-06-20T11:21:58.7333960Z               "line": 170
2026-06-20T11:21:58.7334202Z             },
2026-06-20T11:21:58.7334445Z             {
2026-06-20T11:21:58.7334797Z               "path": "crates/spt-daemon/src/livehost.rs",
2026-06-20T11:21:58.7335171Z               "line": 185
2026-06-20T11:21:58.7335396Z             },
2026-06-20T11:21:58.7335644Z             {
2026-06-20T11:21:58.7335992Z               "path": "crates/spt-daemon/src/livehost.rs",
2026-06-20T11:21:58.7336245Z               "line": 195
2026-06-20T11:21:58.7336488Z             },
2026-06-20T11:21:58.7336726Z             {
2026-06-20T11:21:58.7337079Z               "path": "crates/spt-daemon/src/livehost.rs",
2026-06-20T11:21:58.7337335Z               "line": 205
2026-06-20T11:21:58.7337587Z             },
2026-06-20T11:21:58.7337824Z             {
2026-06-20T11:21:58.7338177Z               "path": "crates/spt-daemon/src/livehost.rs",
2026-06-20T11:21:58.7338530Z               "line": 294
2026-06-20T11:21:58.7338769Z             },
2026-06-20T11:21:58.7339084Z             {
2026-06-20T11:21:58.7339437Z               "path": "crates/spt-daemon/src/livehost.rs",
2026-06-20T11:21:58.7339694Z               "line": 308
2026-06-20T11:21:58.7339937Z             },
2026-06-20T11:21:58.7340174Z             {
2026-06-20T11:21:58.7340532Z               "path": "crates/spt-daemon/src/livehost.rs",
2026-06-20T11:21:58.7340780Z               "line": 377
2026-06-20T11:21:58.7341019Z             },
2026-06-20T11:21:58.7341251Z             {
2026-06-20T11:21:58.7341605Z               "path": "crates/spt-daemon/src/livehost.rs",
2026-06-20T11:21:58.7341862Z               "line": 437
2026-06-20T11:21:58.7342110Z             },
2026-06-20T11:21:58.7342349Z             {
2026-06-20T11:21:58.7342690Z               "path": "crates/spt-daemon/src/livehost.rs",
2026-06-20T11:21:58.7342941Z               "line": 455
2026-06-20T11:21:58.7343184Z             }
2026-06-20T11:21:58.7343432Z           ]
2026-06-20T11:21:58.7343661Z         },
2026-06-20T11:21:58.7343905Z         "int": {
2026-06-20T11:21:58.7344176Z           "complete": true,
2026-06-20T11:21:58.7344428Z           "evidence": [
2026-06-20T11:21:58.7344666Z             {
2026-06-20T11:21:58.7345053Z               "path": "crates/spt/tests/livehost_bootrace_e2e.rs",
2026-06-20T11:21:58.7345315Z               "line": 45
2026-06-20T11:21:58.7345552Z             },
2026-06-20T11:21:58.7345794Z             {
2026-06-20T11:21:58.7346176Z               "path": "crates/spt/tests/livehost_bootrace_e2e.rs",
2026-06-20T11:21:58.7346424Z               "line": 354
2026-06-20T11:21:58.7346666Z             },
2026-06-20T11:21:58.7346900Z             {
2026-06-20T11:21:58.7347310Z               "path": "crates/spt/tests/livehost_nonresident_e2e.rs",
2026-06-20T11:21:58.7347557Z               "line": 31
2026-06-20T11:21:58.7347793Z             }
2026-06-20T11:21:58.7348029Z           ]
2026-06-20T11:21:58.7348270Z         },
2026-06-20T11:21:58.7348513Z         "unit": {
2026-06-20T11:21:58.7348780Z           "complete": true,
2026-06-20T11:21:58.7349162Z           "evidence": [
2026-06-20T11:21:58.7349400Z             {
2026-06-20T11:21:58.7349752Z               "path": "crates/spt-daemon/src/livehost.rs",
2026-06-20T11:21:58.7350011Z               "line": 727
2026-06-20T11:21:58.7350250Z             }
2026-06-20T11:21:58.7350492Z           ]
2026-06-20T11:21:58.7350729Z         }
2026-06-20T11:21:58.7350973Z       }
2026-06-20T11:21:58.7351201Z     },
2026-06-20T11:21:58.7351430Z     {
2026-06-20T11:21:58.7351730Z       "id": "REQ-HAZARD-LOCAL-API-AUTH",
2026-06-20T11:21:58.7352346Z       "title": "Every local `api` mutation authenticated to an endpoint/session (codex #13)",
2026-06-20T11:21:58.7352613Z       "requiredStages": [
2026-06-20T11:21:58.7352853Z         "impl",
2026-06-20T11:21:58.7353098Z         "unit"
2026-06-20T11:21:58.7353330Z       ],
2026-06-20T11:21:58.7353573Z       "stages": {
2026-06-20T11:21:58.7353830Z         "doc": {
2026-06-20T11:21:58.7354097Z           "complete": false,
2026-06-20T11:21:58.7354354Z           "evidence": []
2026-06-20T11:21:58.7354584Z         },
2026-06-20T11:21:58.7354832Z         "impl": {
2026-06-20T11:21:58.7355099Z           "complete": true,
2026-06-20T11:21:58.7355347Z           "evidence": [
2026-06-20T11:21:58.7355715Z             {
2026-06-20T11:21:58.7356037Z               "path": "crates/spt/src/api/auth.rs",
2026-06-20T11:21:58.7356296Z               "line": 14
2026-06-20T11:21:58.7356535Z             },
2026-06-20T11:21:58.7356774Z             {
2026-06-20T11:21:58.7357084Z               "path": "crates/spt/src/api/mod.rs",
2026-06-20T11:21:58.7357337Z               "line": 566
2026-06-20T11:21:58.7357579Z             }
2026-06-20T11:21:58.7357813Z           ]
2026-06-20T11:21:58.7358057Z         },
2026-06-20T11:21:58.7358300Z         "int": {
2026-06-20T11:21:58.7358565Z           "complete": false,
2026-06-20T11:21:58.7358815Z           "evidence": []
2026-06-20T11:21:58.7359240Z         },
2026-06-20T11:21:58.7359511Z         "unit": {
2026-06-20T11:21:58.7359769Z           "complete": true,
2026-06-20T11:21:58.7360022Z           "evidence": [
2026-06-20T11:21:58.7360247Z             {
2026-06-20T11:21:58.7360567Z               "path": "crates/spt/src/api/auth.rs",
2026-06-20T11:21:58.7360824Z               "line": 130
2026-06-20T11:21:58.7361061Z             },
2026-06-20T11:21:58.7361294Z             {
2026-06-20T11:21:58.7361605Z               "path": "crates/spt/src/api/auth.rs",
2026-06-20T11:21:58.7361867Z               "line": 138
2026-06-20T11:21:58.7362105Z             },
2026-06-20T11:21:58.7362328Z             {
2026-06-20T11:21:58.7362638Z               "path": "crates/spt/src/api/auth.rs",
2026-06-20T11:21:58.7362891Z               "line": 146
2026-06-20T11:21:58.7363136Z             },
2026-06-20T11:21:58.7363369Z             {
2026-06-20T11:21:58.7363677Z               "path": "crates/spt/src/api/auth.rs",
2026-06-20T11:21:58.7363937Z               "line": 154
2026-06-20T11:21:58.7364180Z             },
2026-06-20T11:21:58.7364424Z             {
2026-06-20T11:21:58.7364734Z               "path": "crates/spt/src/api/auth.rs",
2026-06-20T11:21:58.7364992Z               "line": 162
2026-06-20T11:21:58.7365234Z             },
2026-06-20T11:21:58.7365468Z             {
2026-06-20T11:21:58.7365773Z               "path": "crates/spt/src/api/auth.rs",
2026-06-20T11:21:58.7366031Z               "line": 170
2026-06-20T11:21:58.7366275Z             }
2026-06-20T11:21:58.7366506Z           ]
2026-06-20T11:21:58.7366747Z         }
2026-06-20T11:21:58.7366982Z       }
2026-06-20T11:21:58.7367224Z     },
2026-06-20T11:21:58.7367452Z     {
2026-06-20T11:21:58.7367753Z       "id": "REQ-HAZARD-PAIR-RATE-LIMIT",
2026-06-20T11:21:58.7370239Z       "title": "Subnet-global pairing rate limit: one active ceremony per subnet, shared attempt counter, exponential backoff — a public pre-trust relay + multiple seed-holders otherwise enables distributed SPAKE2 guessing (and ±1 TOTP window triples the valid-password space) (ADR-0005 #11)",
2026-06-20T11:21:58.7370516Z       "requiredStages": [
2026-06-20T11:21:58.7370755Z         "impl",
2026-06-20T11:21:58.7370992Z         "unit"
2026-06-20T11:21:58.7371230Z       ],
2026-06-20T11:21:58.7371470Z       "stages": {
2026-06-20T11:21:58.7371714Z         "doc": {
2026-06-20T11:21:58.7371968Z           "complete": false,
2026-06-20T11:21:58.7372221Z           "evidence": []
2026-06-20T11:21:58.7372460Z         },
2026-06-20T11:21:58.7372699Z         "impl": {
2026-06-20T11:21:58.7372956Z           "complete": true,
2026-06-20T11:21:58.7373198Z           "evidence": [
2026-06-20T11:21:58.7373437Z             {
2026-06-20T11:21:58.7373837Z               "path": "crates/spt-net/src/net/pairing/ratelimit.rs",
2026-06-20T11:21:58.7374080Z               "line": 34
2026-06-20T11:21:58.7374323Z             }
2026-06-20T11:21:58.7374554Z           ]
2026-06-20T11:21:58.7374783Z         },
2026-06-20T11:21:58.7375022Z         "int": {
2026-06-20T11:21:58.7375299Z           "complete": false,
2026-06-20T11:21:58.7375557Z           "evidence": []
2026-06-20T11:21:58.7375784Z         },
2026-06-20T11:21:58.7376024Z         "unit": {
2026-06-20T11:21:58.7376285Z           "complete": true,
2026-06-20T11:21:58.7376540Z           "evidence": [
2026-06-20T11:21:58.7376906Z             {
2026-06-20T11:21:58.7377307Z               "path": "crates/spt-net/src/net/pairing/ratelimit.rs",
2026-06-20T11:21:58.7377561Z               "line": 188
2026-06-20T11:21:58.7377804Z             },
2026-06-20T11:21:58.7378045Z             {
2026-06-20T11:21:58.7378448Z               "path": "crates/spt-net/src/net/pairing/ratelimit.rs",
2026-06-20T11:21:58.7378709Z               "line": 200
2026-06-20T11:21:58.7378933Z             },
2026-06-20T11:21:58.7379252Z             {
2026-06-20T11:21:58.7379652Z               "path": "crates/spt-net/src/net/pairing/ratelimit.rs",
2026-06-20T11:21:58.7379903Z               "line": 211
2026-06-20T11:21:58.7380152Z             },
2026-06-20T11:21:58.7380495Z             {
2026-06-20T11:21:58.7380903Z               "path": "crates/spt-net/src/net/pairing/ratelimit.rs",
2026-06-20T11:21:58.7381157Z               "line": 253
2026-06-20T11:21:58.7381391Z             },
2026-06-20T11:21:58.7381635Z             {
2026-06-20T11:21:58.7382035Z               "path": "crates/spt-net/src/net/pairing/ratelimit.rs",
2026-06-20T11:21:58.7382288Z               "line": 277
2026-06-20T11:21:58.7382524Z             },
2026-06-20T11:21:58.7382767Z             {
2026-06-20T11:21:58.7383172Z               "path": "crates/spt-net/src/net/pairing/ratelimit.rs",
2026-06-20T11:21:58.7383434Z               "line": 300
2026-06-20T11:21:58.7383678Z             },
2026-06-20T11:21:58.7383913Z             {
2026-06-20T11:21:58.7384321Z               "path": "crates/spt-net/src/net/pairing/ratelimit.rs",
2026-06-20T11:21:58.7384585Z               "line": 316
2026-06-20T11:21:58.7384826Z             }
2026-06-20T11:21:58.7385067Z           ]
2026-06-20T11:21:58.7385310Z         }
2026-06-20T11:21:58.7385549Z       }
2026-06-20T11:21:58.7385783Z     },
2026-06-20T11:21:58.7386015Z     {
2026-06-20T11:21:58.7386335Z       "id": "REQ-HAZARD-PAIR-SEED-ROTATION",
2026-06-20T11:21:58.7387924Z       "title": "Removing a node rotates the subnet seed (epoch bump) so an old node/old seed cannot rejoin; trust-store delete alone is NOT revocation because the seed is replicated to every trusted node (ADR-0005 #10)",
2026-06-20T11:21:58.7388249Z       "requiredStages": [
2026-06-20T11:21:58.7388568Z         "impl",
2026-06-20T11:21:58.7388916Z         "unit"
2026-06-20T11:21:58.7389318Z       ],
2026-06-20T11:21:58.7389594Z       "stages": {
2026-06-20T11:21:58.7389837Z         "doc": {
2026-06-20T11:21:58.7390103Z           "complete": false,
2026-06-20T11:21:58.7390364Z           "evidence": []
2026-06-20T11:21:58.7390601Z         },
2026-06-20T11:21:58.7390843Z         "impl": {
2026-06-20T11:21:58.7391111Z           "complete": true,
2026-06-20T11:21:58.7391364Z           "evidence": [
2026-06-20T11:21:58.7391617Z             {
2026-06-20T11:21:58.7391951Z               "path": "crates/spt-store/src/subnet.rs",
2026-06-20T11:21:58.7392209Z               "line": 29
2026-06-20T11:21:58.7392432Z             },
2026-06-20T11:21:58.7392670Z             {
2026-06-20T11:21:58.7393004Z               "path": "crates/spt-store/src/subnet.rs",
2026-06-20T11:21:58.7393271Z               "line": 174
2026-06-20T11:21:58.7393514Z             },
2026-06-20T11:21:58.7393752Z             {
2026-06-20T11:21:58.7394085Z               "path": "crates/spt-store/src/subnet.rs",
2026-06-20T11:21:58.7394338Z               "line": 194
2026-06-20T11:21:58.7394571Z             },
2026-06-20T11:21:58.7394807Z             {
2026-06-20T11:21:58.7395145Z               "path": "crates/spt-store/src/subnet.rs",
2026-06-20T11:21:58.7395401Z               "line": 222
2026-06-20T11:21:58.7395636Z             }
2026-06-20T11:21:58.7395871Z           ]
2026-06-20T11:21:58.7396105Z         },
2026-06-20T11:21:58.7396343Z         "int": {
2026-06-20T11:21:58.7396609Z           "complete": false,
2026-06-20T11:21:58.7396867Z           "evidence": []
2026-06-20T11:21:58.7397100Z         },
2026-06-20T11:21:58.7397335Z         "unit": {
2026-06-20T11:21:58.7397597Z           "complete": true,
2026-06-20T11:21:58.7397844Z           "evidence": [
2026-06-20T11:21:58.7398219Z             {
2026-06-20T11:21:58.7398551Z               "path": "crates/spt-store/src/subnet.rs",
2026-06-20T11:21:58.7398804Z               "line": 329
2026-06-20T11:21:58.7399133Z             },
2026-06-20T11:21:58.7399372Z             {
2026-06-20T11:21:58.7399706Z               "path": "crates/spt-store/src/subnet.rs",
2026-06-20T11:21:58.7399949Z               "line": 344
2026-06-20T11:21:58.7400198Z             },
2026-06-20T11:21:58.7400435Z             {
2026-06-20T11:21:58.7400791Z               "path": "crates/spt-store/src/subnet.rs",
2026-06-20T11:21:58.7401047Z               "line": 417
2026-06-20T11:21:58.7401286Z             },
2026-06-20T11:21:58.7401633Z             {
2026-06-20T11:21:58.7401962Z               "path": "crates/spt-store/src/subnet.rs",
2026-06-20T11:21:58.7402215Z               "line": 433
2026-06-20T11:21:58.7402455Z             },
2026-06-20T11:21:58.7402691Z             {
2026-06-20T11:21:58.7403006Z               "path": "crates/spt-store/src/subnet.rs",
2026-06-20T11:21:58.7403269Z               "line": 492
2026-06-20T11:21:58.7403502Z             },
2026-06-20T11:21:58.7403735Z             {
2026-06-20T11:21:58.7404060Z               "path": "crates/spt-store/src/subnet.rs",
2026-06-20T11:21:58.7404307Z               "line": 506
2026-06-20T11:21:58.7404541Z             },
2026-06-20T11:21:58.7404770Z             {
2026-06-20T11:21:58.7405085Z               "path": "crates/spt-store/src/subnet.rs",
2026-06-20T11:21:58.7405347Z               "line": 517
2026-06-20T11:21:58.7405571Z             },
2026-06-20T11:21:58.7405813Z             {
2026-06-20T11:21:58.7406144Z               "path": "crates/spt-store/src/subnet.rs",
2026-06-20T11:21:58.7406403Z               "line": 528
2026-06-20T11:21:58.7406646Z             }
2026-06-20T11:21:58.7406878Z           ]
2026-06-20T11:21:58.7407112Z         }
2026-06-20T11:21:58.7407332Z       }
2026-06-20T11:21:58.7407566Z     },
2026-06-20T11:21:58.7407789Z     {
2026-06-20T11:21:58.7408128Z       "id": "REQ-HAZARD-PAIR-TRANSCRIPT-BIND",
2026-06-20T11:21:58.7409813Z       "title": "Pairing transcript binds roles, both node pubkeys, subnet ID, seed epoch, TOTP time-step, and confirmation MACs — or unknown-key-share/reflection/wrong-subnet/replay pairing remain possible (ADR-0005 #12)",
2026-06-20T11:21:58.7410075Z       "requiredStages": [
2026-06-20T11:21:58.7410318Z         "impl",
2026-06-20T11:21:58.7410551Z         "unit"
2026-06-20T11:21:58.7410786Z       ],
2026-06-20T11:21:58.7411029Z       "stages": {
2026-06-20T11:21:58.7411261Z         "doc": {
2026-06-20T11:21:58.7411517Z           "complete": false,
2026-06-20T11:21:58.7411774Z           "evidence": []
2026-06-20T11:21:58.7412017Z         },
2026-06-20T11:21:58.7412250Z         "impl": {
2026-06-20T11:21:58.7412513Z           "complete": true,
2026-06-20T11:21:58.7412780Z           "evidence": [
2026-06-20T11:21:58.7413010Z             {
2026-06-20T11:21:58.7413390Z               "path": "crates/spt-net/src/net/pairing/spake.rs",
2026-06-20T11:21:58.7413649Z               "line": 27
2026-06-20T11:21:58.7413886Z             },
2026-06-20T11:21:58.7414119Z             {
2026-06-20T11:21:58.7414481Z               "path": "crates/spt-net/src/net/pairing/spake.rs",
2026-06-20T11:21:58.7414734Z               "line": 110
2026-06-20T11:21:58.7414968Z             },
2026-06-20T11:21:58.7415201Z             {
2026-06-20T11:21:58.7415555Z               "path": "crates/spt-net/src/net/pairing/spake.rs",
2026-06-20T11:21:58.7415801Z               "line": 153
2026-06-20T11:21:58.7416026Z             },
2026-06-20T11:21:58.7416270Z             {
2026-06-20T11:21:58.7416634Z               "path": "crates/spt-net/src/net/pairing/spake.rs",
2026-06-20T11:21:58.7416891Z               "line": 182
2026-06-20T11:21:58.7417128Z             },
2026-06-20T11:21:58.7417362Z             {
2026-06-20T11:21:58.7417758Z               "path": "crates/spt-net/src/net/pairing/transcript.rs",
2026-06-20T11:21:58.7418015Z               "line": 31
2026-06-20T11:21:58.7418235Z             },
2026-06-20T11:21:58.7418583Z             {
2026-06-20T11:21:58.7419061Z               "path": "crates/spt-net/src/net/pairing/transcript.rs",
2026-06-20T11:21:58.7419316Z               "line": 113
2026-06-20T11:21:58.7419558Z             },
2026-06-20T11:21:58.7419801Z             {
2026-06-20T11:21:58.7420206Z               "path": "crates/spt-net/src/net/pairing/transcript.rs",
2026-06-20T11:21:58.7420449Z               "line": 138
2026-06-20T11:21:58.7420688Z             }
2026-06-20T11:21:58.7420921Z           ]
2026-06-20T11:21:58.7421159Z         },
2026-06-20T11:21:58.7421394Z         "int": {
2026-06-20T11:21:58.7421661Z           "complete": false,
2026-06-20T11:21:58.7422026Z           "evidence": []
2026-06-20T11:21:58.7422263Z         },
2026-06-20T11:21:58.7422505Z         "unit": {
2026-06-20T11:21:58.7422754Z           "complete": true,
2026-06-20T11:21:58.7423001Z           "evidence": [
2026-06-20T11:21:58.7423231Z             {
2026-06-20T11:21:58.7423594Z               "path": "crates/spt-net/src/net/pairing/spake.rs",
2026-06-20T11:21:58.7423846Z               "line": 261
2026-06-20T11:21:58.7424069Z             },
2026-06-20T11:21:58.7424308Z             {
2026-06-20T11:21:58.7424669Z               "path": "crates/spt-net/src/net/pairing/spake.rs",
2026-06-20T11:21:58.7424918Z               "line": 276
2026-06-20T11:21:58.7425151Z             },
2026-06-20T11:21:58.7425384Z             {
2026-06-20T11:21:58.7425742Z               "path": "crates/spt-net/src/net/pairing/spake.rs",
2026-06-20T11:21:58.7425985Z               "line": 293
2026-06-20T11:21:58.7426224Z             },
2026-06-20T11:21:58.7426454Z             {
2026-06-20T11:21:58.7426816Z               "path": "crates/spt-net/src/net/pairing/spake.rs",
2026-06-20T11:21:58.7427071Z               "line": 310
2026-06-20T11:21:58.7427298Z             },
2026-06-20T11:21:58.7427536Z             {
2026-06-20T11:21:58.7427894Z               "path": "crates/spt-net/src/net/pairing/spake.rs",
2026-06-20T11:21:58.7428161Z               "line": 327
2026-06-20T11:21:58.7428395Z             },
2026-06-20T11:21:58.7428638Z             {
2026-06-20T11:21:58.7429082Z               "path": "crates/spt-net/src/net/pairing/spake.rs",
2026-06-20T11:21:58.7429340Z               "line": 366
2026-06-20T11:21:58.7429583Z             },
2026-06-20T11:21:58.7429805Z             {
2026-06-20T11:21:58.7430203Z               "path": "crates/spt-net/src/net/pairing/transcript.rs",
2026-06-20T11:21:58.7430452Z               "line": 179
2026-06-20T11:21:58.7430685Z             },
2026-06-20T11:21:58.7430924Z             {
2026-06-20T11:21:58.7431310Z               "path": "crates/spt-net/src/net/pairing/transcript.rs",
2026-06-20T11:21:58.7431568Z               "line": 194
2026-06-20T11:21:58.7431810Z             },
2026-06-20T11:21:58.7432048Z             {
2026-06-20T11:21:58.7432438Z               "path": "crates/spt-net/src/net/pairing/transcript.rs",
2026-06-20T11:21:58.7433108Z               "line": 204
2026-06-20T11:21:58.7433356Z             },
2026-06-20T11:21:58.7433590Z             {
2026-06-20T11:21:58.7433986Z               "path": "crates/spt-net/src/net/pairing/transcript.rs",
2026-06-20T11:21:58.7434243Z               "line": 259
2026-06-20T11:21:58.7434483Z             },
2026-06-20T11:21:58.7434716Z             {
2026-06-20T11:21:58.7435108Z               "path": "crates/spt-net/src/net/pairing/transcript.rs",
2026-06-20T11:21:58.7435363Z               "line": 269
2026-06-20T11:21:58.7435596Z             },
2026-06-20T11:21:58.7435841Z             {
2026-06-20T11:21:58.7436235Z               "path": "crates/spt-net/src/net/pairing/transcript.rs",
2026-06-20T11:21:58.7436493Z               "line": 283
2026-06-20T11:21:58.7436737Z             }
2026-06-20T11:21:58.7436975Z           ]
2026-06-20T11:21:58.7437198Z         }
2026-06-20T11:21:58.7437427Z       }
2026-06-20T11:21:58.7437665Z     },
2026-06-20T11:21:58.7437891Z     {
2026-06-20T11:21:58.7438205Z       "id": "REQ-HAZARD-PARENT-PID-PREFER",
2026-06-20T11:21:58.7438703Z       "title": "Prefer stable parent PID / broker handle over ephemeral PID (2.1)",
2026-06-20T11:21:58.7439217Z       "requiredStages": [],
2026-06-20T11:21:58.7439460Z       "stages": {
2026-06-20T11:21:58.7439698Z         "doc": {
2026-06-20T11:21:58.7439961Z           "complete": false,
2026-06-20T11:21:58.7440215Z           "evidence": []
2026-06-20T11:21:58.7440455Z         },
2026-06-20T11:21:58.7440687Z         "impl": {
2026-06-20T11:21:58.7440945Z           "complete": false,
2026-06-20T11:21:58.7441203Z           "evidence": []
2026-06-20T11:21:58.7441436Z         },
2026-06-20T11:21:58.7441679Z         "int": {
2026-06-20T11:21:58.7441931Z           "complete": false,
2026-06-20T11:21:58.7442289Z           "evidence": []
2026-06-20T11:21:58.7442519Z         },
2026-06-20T11:21:58.7442758Z         "unit": {
2026-06-20T11:21:58.7443018Z           "complete": false,
2026-06-20T11:21:58.7443268Z           "evidence": []
2026-06-20T11:21:58.7443531Z         }
2026-06-20T11:21:58.7443765Z       }
2026-06-20T11:21:58.7443997Z     },
2026-06-20T11:21:58.7444231Z     {
2026-06-20T11:21:58.7444560Z       "id": "REQ-HAZARD-PSYCHE-OUTBOUND-PROXY",
2026-06-20T11:21:58.7446476Z       "title": "Psyche outbound captured + sanitized: the live-Psyche turn driver captures stdout (never Stdio::null), and the daemon strips/re-stamps Psyche-supplied from=/target and constrains routing (reply→__REPLY_TO__ sender, notify→own user/subnet) (7.3)",
2026-06-20T11:21:58.7446730Z       "requiredStages": [
2026-06-20T11:21:58.7446978Z         "impl",
2026-06-20T11:21:58.7447211Z         "unit"
2026-06-20T11:21:58.7447449Z       ],
2026-06-20T11:21:58.7447687Z       "stages": {
2026-06-20T11:21:58.7447923Z         "doc": {
2026-06-20T11:21:58.7448187Z           "complete": false,
2026-06-20T11:21:58.7448441Z           "evidence": []
2026-06-20T11:21:58.7448676Z         },
2026-06-20T11:21:58.7448910Z         "impl": {
2026-06-20T11:21:58.7449258Z           "complete": true,
2026-06-20T11:21:58.7449507Z           "evidence": [
2026-06-20T11:21:58.7449739Z             {
2026-06-20T11:21:58.7450093Z               "path": "crates/spt-daemon/src/psyrelay.rs",
2026-06-20T11:21:58.7450345Z               "line": 26
2026-06-20T11:21:58.7450573Z             },
2026-06-20T11:21:58.7450799Z             {
2026-06-20T11:21:58.7451144Z               "path": "crates/spt-daemon/src/psyrelay.rs",
2026-06-20T11:21:58.7451400Z               "line": 95
2026-06-20T11:21:58.7451633Z             },
2026-06-20T11:21:58.7451867Z             {
2026-06-20T11:21:58.7452201Z               "path": "crates/spt-daemon/src/psyrelay.rs",
2026-06-20T11:21:58.7452458Z               "line": 166
2026-06-20T11:21:58.7452689Z             },
2026-06-20T11:21:58.7452925Z             {
2026-06-20T11:21:58.7453255Z               "path": "crates/spt-live/src/outbound.rs",
2026-06-20T11:21:58.7453506Z               "line": 19
2026-06-20T11:21:58.7453734Z             },
2026-06-20T11:21:58.7453962Z             {
2026-06-20T11:21:58.7454291Z               "path": "crates/spt-live/src/outbound.rs",
2026-06-20T11:21:58.7454539Z               "line": 50
2026-06-20T11:21:58.7454773Z             },
2026-06-20T11:21:58.7455016Z             {
2026-06-20T11:21:58.7455326Z               "path": "crates/spt-live/src/turn.rs",
2026-06-20T11:21:58.7455579Z               "line": 18
2026-06-20T11:21:58.7455817Z             },
2026-06-20T11:21:58.7456060Z             {
2026-06-20T11:21:58.7456369Z               "path": "crates/spt-live/src/turn.rs",
2026-06-20T11:21:58.7456618Z               "line": 71
2026-06-20T11:21:58.7456860Z             },
2026-06-20T11:21:58.7457093Z             {
2026-06-20T11:21:58.7457418Z               "path": "crates/spt-proto/src/event.rs",
2026-06-20T11:21:58.7457670Z               "line": 87
2026-06-20T11:21:58.7457904Z             }
2026-06-20T11:21:58.7458144Z           ]
2026-06-20T11:21:58.7458377Z         },
2026-06-20T11:21:58.7458609Z         "int": {
2026-06-20T11:21:58.7458870Z           "complete": false,
2026-06-20T11:21:58.7459194Z           "evidence": []
2026-06-20T11:21:58.7459427Z         },
2026-06-20T11:21:58.7459837Z         "unit": {
2026-06-20T11:21:58.7460095Z           "complete": true,
2026-06-20T11:21:58.7460343Z           "evidence": [
2026-06-20T11:21:58.7460585Z             {
2026-06-20T11:21:58.7460909Z               "path": "crates/spt-daemon/src/psyrelay.rs",
2026-06-20T11:21:58.7461162Z               "line": 289
2026-06-20T11:21:58.7461406Z             },
2026-06-20T11:21:58.7461638Z             {
2026-06-20T11:21:58.7461945Z               "path": "crates/spt-daemon/src/psyrelay.rs",
2026-06-20T11:21:58.7462198Z               "line": 314
2026-06-20T11:21:58.7462437Z             },
2026-06-20T11:21:58.7462680Z             {
2026-06-20T11:21:58.7463085Z               "path": "crates/spt-daemon/src/psyrelay.rs",
2026-06-20T11:21:58.7463333Z               "line": 350
2026-06-20T11:21:58.7463573Z             },
2026-06-20T11:21:58.7463810Z             {
2026-06-20T11:21:58.7464114Z               "path": "crates/spt-daemon/src/psyrelay.rs",
2026-06-20T11:21:58.7464365Z               "line": 418
2026-06-20T11:21:58.7464604Z             },
2026-06-20T11:21:58.7464847Z             {
2026-06-20T11:21:58.7465142Z               "path": "crates/spt-daemon/src/psyrelay.rs",
2026-06-20T11:21:58.7465398Z               "line": 429
2026-06-20T11:21:58.7465628Z             },
2026-06-20T11:21:58.7465858Z             {
2026-06-20T11:21:58.7466163Z               "path": "crates/spt-daemon/src/psyrelay.rs",
2026-06-20T11:21:58.7466406Z               "line": 460
2026-06-20T11:21:58.7466644Z             },
2026-06-20T11:21:58.7466868Z             {
2026-06-20T11:21:58.7467168Z               "path": "crates/spt-daemon/src/psyrelay.rs",
2026-06-20T11:21:58.7467411Z               "line": 471
2026-06-20T11:21:58.7467639Z             },
2026-06-20T11:21:58.7467864Z             {
2026-06-20T11:21:58.7468154Z               "path": "crates/spt-live/src/outbound.rs",
2026-06-20T11:21:58.7468408Z               "line": 77
2026-06-20T11:21:58.7468627Z             },
2026-06-20T11:21:58.7468860Z             {
2026-06-20T11:21:58.7469236Z               "path": "crates/spt-live/src/outbound.rs",
2026-06-20T11:21:58.7469467Z               "line": 97
2026-06-20T11:21:58.7469697Z             },
2026-06-20T11:21:58.7469920Z             {
2026-06-20T11:21:58.7470201Z               "path": "crates/spt-live/src/outbound.rs",
2026-06-20T11:21:58.7470440Z               "line": 112
2026-06-20T11:21:58.7470612Z             },
2026-06-20T11:21:58.7470783Z             {
2026-06-20T11:21:58.7471021Z               "path": "crates/spt-live/src/outbound.rs",
2026-06-20T11:21:58.7471213Z               "line": 123
2026-06-20T11:21:58.7471383Z             },
2026-06-20T11:21:58.7471561Z             {
2026-06-20T11:21:58.7471794Z               "path": "crates/spt-live/src/outbound.rs",
2026-06-20T11:21:58.7471985Z               "line": 130
2026-06-20T11:21:58.7472160Z             },
2026-06-20T11:21:58.7472325Z             {
2026-06-20T11:21:58.7472564Z               "path": "crates/spt-live/src/outbound.rs",
2026-06-20T11:21:58.7472749Z               "line": 145
2026-06-20T11:21:58.7472921Z             },
2026-06-20T11:21:58.7473087Z             {
2026-06-20T11:21:58.7473307Z               "path": "crates/spt-live/src/turn.rs",
2026-06-20T11:21:58.7473494Z               "line": 115
2026-06-20T11:21:58.7473655Z             },
2026-06-20T11:21:58.7473833Z             {
2026-06-20T11:21:58.7474050Z               "path": "crates/spt-live/src/turn.rs",
2026-06-20T11:21:58.7474236Z               "line": 130
2026-06-20T11:21:58.7474400Z             },
2026-06-20T11:21:58.7474565Z             {
2026-06-20T11:21:58.7474803Z               "path": "crates/spt-proto/src/event.rs",
2026-06-20T11:21:58.7474986Z               "line": 428
2026-06-20T11:21:58.7475164Z             }
2026-06-20T11:21:58.7475329Z           ]
2026-06-20T11:21:58.7475497Z         }
2026-06-20T11:21:58.7475673Z       }
2026-06-20T11:21:58.7475836Z     },
2026-06-20T11:21:58.7476007Z     {
2026-06-20T11:21:58.7476236Z       "id": "REQ-HAZARD-PTY-INPUT-WRITER-WEDGE",
2026-06-20T11:21:58.7483238Z       "title": "Pasting into an `spt rc` session WEDGES the broker — after a paste the operator can no longer type AND can no longer attach to NEW or EXISTING sessions (`brain IPC read deadline`). ROOT (doyle /diagnose, code-grounded): the operator-keystroke path rc -> net-stream Input -> serve_attach (attach.rs:197 brain.send_effect) -> KIND_INPUT -> broker dispatch loop (broker.rs:1091) -> dispatch_input (broker.rs:1459) -> session.write_input(&bytes) runs SYNCHRONOUSLY on the broker request-handling thread. W1b (REQ-HAZARD-EFFECT-JOURNAL-PTY-WEDGE) released the journal lock across the effect (fix 1) + made PtyWrite ephemeral/no-fsync (fix 3) but EXPLICITLY DEFERRED fix (2) — bound/fail-fast the PtyWrite itself. A single keystroke never fills the ConPTY input buffer; a PASTE BURST does -> write_input blocks -> the dispatch thread cannot service the next frame (a re-attach subscribe, a become_controller restore-write, an inject-floor flush) -> wedge. Not a bug-2 regression (the byte path funnels to the same write_input; paste just reliably fills the buffer). FIX (doyle design, V0.13.0-P0-PTY-INPUT-WRITER-DESIGN.md, CONTEXT L33 broker-owns-PTY/minimal + L435 SessionSurface + single-writer pattern): one dedicated per-session INPUT-WRITER THREAD = the SOLE caller of the blocking write_input, fed by a BOUNDED FIFO channel; every caller (dispatch_input, serve_attach->send_effect, inject-floor flush) ENQUEUES + returns immediately, never blocks. A blocked/slow harness blocks ONLY its own writer thread, never the broker dispatch. Backpressure (operator ruling): queue full => DROP excess input + stamp the session INPUT_BACKPRESSURE (visible health signal); the daemon NEVER wedges; a merely-slow harness self-heals as the writer drains. Exactly-once preserved (PtyWrite ephemeral: apply_once effect = the non-blocking enqueue => Applied; ack now means accepted+ordered, benign — rc does not gate on landing); order preserved (single FIFO + single writer); inject-floor (W2 Layer C) choreography moves to the lone writer. Completes the W1b-deferred fix (2), cross-platform (cfg(unix) forkpty park folds in). (v0.13.0)",
2026-06-20T11:21:58.7483562Z       "requiredStages": [
2026-06-20T11:21:58.7483705Z         "impl",
2026-06-20T11:21:58.7483863Z         "unit",
2026-06-20T11:21:58.7484005Z         "int"
2026-06-20T11:21:58.7484153Z       ],
2026-06-20T11:21:58.7484301Z       "stages": {
2026-06-20T11:21:58.7484449Z         "doc": {
2026-06-20T11:21:58.7484606Z           "complete": false,
2026-06-20T11:21:58.7484768Z           "evidence": []
2026-06-20T11:21:58.7484897Z         },
2026-06-20T11:21:58.7485018Z         "impl": {
2026-06-20T11:21:58.7485149Z           "complete": true,
2026-06-20T11:21:58.7485287Z           "evidence": [
2026-06-20T11:21:58.7485405Z             {
2026-06-20T11:21:58.7485579Z               "path": "crates/spt-daemon/src/broker.rs",
2026-06-20T11:21:58.7485710Z               "line": 857
2026-06-20T11:21:58.7485833Z             },
2026-06-20T11:21:58.7485952Z             {
2026-06-20T11:21:58.7486128Z               "path": "crates/spt-store/src/info.rs",
2026-06-20T11:21:58.7486262Z               "line": 322
2026-06-20T11:21:58.7486386Z             }
2026-06-20T11:21:58.7486500Z           ]
2026-06-20T11:21:58.7486626Z         },
2026-06-20T11:21:58.7486749Z         "int": {
2026-06-20T11:21:58.7486877Z           "complete": true,
2026-06-20T11:21:58.7487006Z           "evidence": [
2026-06-20T11:21:58.7487115Z             {
2026-06-20T11:21:58.7487316Z               "path": "crates/spt-daemon/tests/inject_control_wedge.rs",
2026-06-20T11:21:58.7487449Z               "line": 1909
2026-06-20T11:21:58.7487570Z             }
2026-06-20T11:21:58.7487692Z           ]
2026-06-20T11:21:58.7487817Z         },
2026-06-20T11:21:58.7487946Z         "unit": {
2026-06-20T11:21:58.7488078Z           "complete": true,
2026-06-20T11:21:58.7488207Z           "evidence": [
2026-06-20T11:21:58.7488317Z             {
2026-06-20T11:21:58.7488488Z               "path": "crates/spt-daemon/src/broker.rs",
2026-06-20T11:21:58.7488717Z               "line": 2338
2026-06-20T11:21:58.7488832Z             },
2026-06-20T11:21:58.7489031Z             {
2026-06-20T11:21:58.7489204Z               "path": "crates/spt-daemon/src/broker.rs",
2026-06-20T11:21:58.7489337Z               "line": 2402
2026-06-20T11:21:58.7489456Z             },
2026-06-20T11:21:58.7489589Z             {
2026-06-20T11:21:58.7489766Z               "path": "crates/spt-daemon/src/broker.rs",
2026-06-20T11:21:58.7489895Z               "line": 2457
2026-06-20T11:21:58.7490023Z             }
2026-06-20T11:21:58.7490130Z           ]
2026-06-20T11:21:58.7490252Z         }
2026-06-20T11:21:58.7490366Z       }
2026-06-20T11:21:58.7490583Z     },
2026-06-20T11:21:58.7490711Z     {
2026-06-20T11:21:58.7490870Z       "id": "REQ-HAZARD-PUMP-IPC-DEADLINE",
2026-06-20T11:21:58.7491851Z       "title": "The single-threaded peer pump's brain-IPC reads are deadline-bounded (PUMP_PEER_IO_TIMEOUT, total-wait per call); a TimedOut read POISONS the client and escalates to a SUPERVISED RESTART, never a per-peer retry — a black-holed peer must never wedge the whole pump",
2026-06-20T11:21:58.7491994Z       "requiredStages": [
2026-06-20T11:21:58.7492118Z         "doc",
2026-06-20T11:21:58.7492233Z         "impl",
2026-06-20T11:21:58.7492353Z         "unit"
2026-06-20T11:21:58.7492480Z       ],
2026-06-20T11:21:58.7492599Z       "stages": {
2026-06-20T11:21:58.7492729Z         "doc": {
2026-06-20T11:21:58.7492857Z           "complete": true,
2026-06-20T11:21:58.7492987Z           "evidence": [
2026-06-20T11:21:58.7493110Z             {
2026-06-20T11:21:58.7493270Z               "path": "docs/KNOWN-HAZARDS.md",
2026-06-20T11:21:58.7493399Z               "line": 374
2026-06-20T11:21:58.7493525Z             }
2026-06-20T11:21:58.7493636Z           ]
2026-06-20T11:21:58.7493751Z         },
2026-06-20T11:21:58.7493874Z         "impl": {
2026-06-20T11:21:58.7494009Z           "complete": true,
2026-06-20T11:21:58.7494132Z           "evidence": [
2026-06-20T11:21:58.7494256Z             {
2026-06-20T11:21:58.7494423Z               "path": "crates/spt-daemon/src/brain.rs",
2026-06-20T11:21:58.7494561Z               "line": 200
2026-06-20T11:21:58.7494671Z             },
2026-06-20T11:21:58.7494794Z             {
2026-06-20T11:21:58.7494958Z               "path": "crates/spt-daemon/src/brain.rs",
2026-06-20T11:21:58.7495085Z               "line": 304
2026-06-20T11:21:58.7495210Z             },
2026-06-20T11:21:58.7495320Z             {
2026-06-20T11:21:58.7495486Z               "path": "crates/spt-daemon/src/brain.rs",
2026-06-20T11:21:58.7495616Z               "line": 543
2026-06-20T11:21:58.7495737Z             },
2026-06-20T11:21:58.7500050Z             {
2026-06-20T11:21:58.7500278Z               "path": "crates/spt-daemon/src/brain.rs",
2026-06-20T11:21:58.7500417Z               "line": 558
2026-06-20T11:21:58.7500535Z             },
2026-06-20T11:21:58.7500655Z             {
2026-06-20T11:21:58.7500826Z               "path": "crates/spt-daemon/src/brain.rs",
2026-06-20T11:21:58.7500954Z               "line": 1185
2026-06-20T11:21:58.7501087Z             },
2026-06-20T11:21:58.7501195Z             {
2026-06-20T11:21:58.7501367Z               "path": "crates/spt-daemon/src/pump/mod.rs",
2026-06-20T11:21:58.7501491Z               "line": 443
2026-06-20T11:21:58.7501619Z             },
2026-06-20T11:21:58.7501739Z             {
2026-06-20T11:21:58.7501905Z               "path": "crates/spt-daemon/src/pump/mod.rs",
2026-06-20T11:21:58.7502040Z               "line": 590
2026-06-20T11:21:58.7502149Z             },
2026-06-20T11:21:58.7502274Z             {
2026-06-20T11:21:58.7502430Z               "path": "crates/spt-daemon/src/pump/mod.rs",
2026-06-20T11:21:58.7502564Z               "line": 731
2026-06-20T11:21:58.7502683Z             }
2026-06-20T11:21:58.7502807Z           ]
2026-06-20T11:21:58.7502927Z         },
2026-06-20T11:21:58.7503045Z         "int": {
2026-06-20T11:21:58.7503179Z           "complete": false,
2026-06-20T11:21:58.7503304Z           "evidence": []
2026-06-20T11:21:58.7503422Z         },
2026-06-20T11:21:58.7503726Z         "unit": {
2026-06-20T11:21:58.7503869Z           "complete": true,
2026-06-20T11:21:58.7503992Z           "evidence": [
2026-06-20T11:21:58.7504105Z             {
2026-06-20T11:21:58.7504277Z               "path": "crates/spt-daemon/src/pump/mod.rs",
2026-06-20T11:21:58.7504414Z               "line": 1155
2026-06-20T11:21:58.7504535Z             },
2026-06-20T11:21:58.7504654Z             {
2026-06-20T11:21:58.7504845Z               "path": "crates/spt-daemon/tests/pumpdeadline.rs",
2026-06-20T11:21:58.7504969Z               "line": 30
2026-06-20T11:21:58.7505087Z             }
2026-06-20T11:21:58.7505207Z           ]
2026-06-20T11:21:58.7505417Z         }
2026-06-20T11:21:58.7505532Z       }
2026-06-20T11:21:58.7505640Z     },
2026-06-20T11:21:58.7505750Z     {
2026-06-20T11:21:58.7505913Z       "id": "REQ-HAZARD-RC-ATTACH-FAILFAST",
2026-06-20T11:21:58.7509732Z       "title": "B1: `spt rc <id>` to a DEAD or non-streaming session fails fast with a clear message, never an INFINITE blank screen. Today rc.rs run_attach (209-231) + pump spawns PUMP_IPC_READER and blocks: the poll times out each slice but the stream never produces output, so the operator sees a permanent blank (operator: fresh wall-f attached, closed tab, then `spt rc wall-f` HUNG — the broker still resolved a session for it). FIX: (a) once B2 lands, gate attach on is_online/status — an offline endpoint yields a clean 'endpoint offline, start it' not an attach; (b) fail-fast — if the attach-open ack / first output does not arrive within a bound, surface a clear message, never an infinite blank; (c) the broker EOFs the attach stream when the session's child is dead, so rc's existing PumpEnd::BrokerGone graceful path (REQ-HAZARD-RC-EOF) catches it. PIN the exact sub-mechanism with a repro test FIRST (dead-session-lingers-in-broker vs reaped-but-rc-waits vs alive-resting-no-wake — the wall-f Windows tab-close: child alive-silent vs dead-not-reaped). (v0.12.0)",
2026-06-20T11:21:58.7509894Z       "requiredStages": [
2026-06-20T11:21:58.7510023Z         "impl",
2026-06-20T11:21:58.7510151Z         "unit",
2026-06-20T11:21:58.7510276Z         "int"
2026-06-20T11:21:58.7510400Z       ],
2026-06-20T11:21:58.7510519Z       "stages": {
2026-06-20T11:21:58.7510649Z         "doc": {
2026-06-20T11:21:58.7510772Z           "complete": false,
2026-06-20T11:21:58.7510901Z           "evidence": []
2026-06-20T11:21:58.7511020Z         },
2026-06-20T11:21:58.7511143Z         "impl": {
2026-06-20T11:21:58.7511274Z           "complete": true,
2026-06-20T11:21:58.7511401Z           "evidence": [
2026-06-20T11:21:58.7511524Z             {
2026-06-20T11:21:58.7511675Z               "path": "crates/spt/src/rc.rs",
2026-06-20T11:21:58.7511812Z               "line": 718
2026-06-20T11:21:58.7511932Z             },
2026-06-20T11:21:58.7512046Z             {
2026-06-20T11:21:58.7512199Z               "path": "crates/spt/src/rc.rs",
2026-06-20T11:21:58.7512328Z               "line": 887
2026-06-20T11:21:58.7512441Z             }
2026-06-20T11:21:58.7512562Z           ]
2026-06-20T11:21:58.7512675Z         },
2026-06-20T11:21:58.7512800Z         "int": {
2026-06-20T11:21:58.7512919Z           "complete": true,
2026-06-20T11:21:58.7513042Z           "evidence": [
2026-06-20T11:21:58.7513158Z             {
2026-06-20T11:21:58.7513329Z               "path": "crates/spt-daemon/tests/broker.rs",
2026-06-20T11:21:58.7513458Z               "line": 403
2026-06-20T11:21:58.7513581Z             }
2026-06-20T11:21:58.7513701Z           ]
2026-06-20T11:21:58.7513807Z         },
2026-06-20T11:21:58.7513934Z         "unit": {
2026-06-20T11:21:58.7514054Z           "complete": true,
2026-06-20T11:21:58.7514183Z           "evidence": [
2026-06-20T11:21:58.7514305Z             {
2026-06-20T11:21:58.7514439Z               "path": "crates/spt/src/rc.rs",
2026-06-20T11:21:58.7514566Z               "line": 1072
2026-06-20T11:21:58.7514679Z             },
2026-06-20T11:21:58.7514804Z             {
2026-06-20T11:21:58.7514947Z               "path": "crates/spt/src/rc.rs",
2026-06-20T11:21:58.7515195Z               "line": 1096
2026-06-20T11:21:58.7515313Z             }
2026-06-20T11:21:58.7515429Z           ]
2026-06-20T11:21:58.7515553Z         }
2026-06-20T11:21:58.7515652Z       }
2026-06-20T11:21:58.7515763Z     },
2026-06-20T11:21:58.7515882Z     {
2026-06-20T11:21:58.7516054Z       "id": "REQ-HAZARD-RC-ATTACH-ONLINE-RACE",
2026-06-20T11:21:58.7520241Z       "title": "`spt endpoint run` in an ATTACH/VIEW terminal action attaches BEFORE the freshly-spawned endpoint is online, so the attach races (or outright loses to) the harness bind. ROOT (doyle /diagnose, code-grounded): cmd_endpoint_run (cli.rs) does launch_harness_brokered_in -> (if start: return) -> run_attach with NO await-online between them. launch_harness_brokered_in returns once the harness PROCESS is spawned, but the broker-PTY bind (info status -> STATUS_ONLINE + the live session) lands ASYNC. Both picker attach paths route here with start=false (RunMode::Attach -> cmd_endpoint_run start=false,view=false): Start-now catches the endpoint mid-bringup -> run_attach attempts + loses the handshake race; Resume-from-history catches it still fully OFFLINE -> run_attach's status-gate (REQ-HAZARD-RC-ATTACH-FAILFAST) short-circuits 'offline - nothing to attach' and NEVER attempts. SAME root, two faces (the W4 attach-by-default surfaced both; an online endpoint is unaffected - the picker returns Outcome::Attach, not Run). FIX: in cmd_endpoint_run, when the terminal action is attach/view (NOT start), AWAIT the endpoint online between launch_harness_brokered_in success and run_attach - poll spt_store::info read_info().status to STATUS_ONLINE with a bounded harness-boot deadline (~25s) at a tight interval; on online -> run_attach; on timeout -> ENDPOINT_RUN_ONLINE_TIMEOUT err (do NOT attach a dead bringup). (v0.13.0)",
2026-06-20T11:21:58.7520507Z       "requiredStages": [
2026-06-20T11:21:58.7520626Z         "impl",
2026-06-20T11:21:58.7520740Z         "unit",
2026-06-20T11:21:58.7520856Z         "int"
2026-06-20T11:21:58.7520979Z       ],
2026-06-20T11:21:58.7521107Z       "stages": {
2026-06-20T11:21:58.7521218Z         "doc": {
2026-06-20T11:21:58.7521341Z           "complete": false,
2026-06-20T11:21:58.7521476Z           "evidence": []
2026-06-20T11:21:58.7521580Z         },
2026-06-20T11:21:58.7521699Z         "impl": {
2026-06-20T11:21:58.7521829Z           "complete": true,
2026-06-20T11:21:58.7521961Z           "evidence": [
2026-06-20T11:21:58.7522079Z             {
2026-06-20T11:21:58.7522226Z               "path": "crates/spt/src/cli.rs",
2026-06-20T11:21:58.7522353Z               "line": 1417
2026-06-20T11:21:58.7522459Z             },
2026-06-20T11:21:58.7522573Z             {
2026-06-20T11:21:58.7522721Z               "path": "crates/spt/src/cli.rs",
2026-06-20T11:21:58.7522850Z               "line": 1441
2026-06-20T11:21:58.7522973Z             }
2026-06-20T11:21:58.7523089Z           ]
2026-06-20T11:21:58.7523217Z         },
2026-06-20T11:21:58.7523345Z         "int": {
2026-06-20T11:21:58.7523498Z           "complete": true,
2026-06-20T11:21:58.7523626Z           "evidence": [
2026-06-20T11:21:58.7523747Z             {
2026-06-20T11:21:58.7523927Z               "path": "crates/spt/tests/dummy_harness_e2e.rs",
2026-06-20T11:21:58.7524052Z               "line": 329
2026-06-20T11:21:58.7524170Z             }
2026-06-20T11:21:58.7524280Z           ]
2026-06-20T11:21:58.7524405Z         },
2026-06-20T11:21:58.7524528Z         "unit": {
2026-06-20T11:21:58.7524657Z           "complete": true,
2026-06-20T11:21:58.7524785Z           "evidence": [
2026-06-20T11:21:58.7524903Z             {
2026-06-20T11:21:58.7525056Z               "path": "crates/spt/src/cli.rs",
2026-06-20T11:21:58.7525183Z               "line": 8169
2026-06-20T11:21:58.7525306Z             }
2026-06-20T11:21:58.7525417Z           ]
2026-06-20T11:21:58.7525535Z         }
2026-06-20T11:21:58.7525651Z       }
2026-06-20T11:21:58.7525760Z     },
2026-06-20T11:21:58.7525873Z     {
2026-06-20T11:21:58.7526008Z       "id": "REQ-HAZARD-RC-EOF",
2026-06-20T11:21:58.7530433Z       "title": "A severed broker stream during a live rc session surfaces GRACEFULLY, never as a raw io error that crashes the PTY. The rc read-loop (rc.rs:352-362) continues only on WouldBlock/TimedOut; ANY other read_event_until error — including UnexpectedEof 'failed to fill whole buffer' — returns Err → RC_FAIL → the PTY 'crashes' from the user's view. Confirmed trigger: a deliberate `spt daemon stop` (broker bounce) severs an active rc (perri stopped the daemon to release owlery watch handles). Same severed-broker-stream EOF class as the v0.9.1 seed fix (seed_fail_message) and the listener-death case — spt-core must classify a broker-gone EOF and (a) surface a CLEAR actionable message ('daemon stopped/restarted — re-run / reconnect'), never the raw buffer error, and ideally (b) AUTO-REATTACH to the same session on the fresh broker (the broker is the daemon-lifetime anchor; it returns on the next `spt api` call). FOLD two side-observations: (1) `spt daemon stop` SILENTLY drops active rc/live sessions — warn ('N active session(s) will drop') or graceful-detach on stop; (2) the daemon holds owlery WATCH HANDLES on perch dirs so a torn-down perch dir stays 'Device busy' until a full daemon stop releases them (perri's rt-* cleanup) — a torn-down perch's handle should release without a daemon stop. doyle Finding C, root-caused. (post-v0.10.0)",
2026-06-20T11:21:58.7530685Z       "requiredStages": [
2026-06-20T11:21:58.7530811Z         "impl",
2026-06-20T11:21:58.7530929Z         "unit"
2026-06-20T11:21:58.7531053Z       ],
2026-06-20T11:21:58.7531177Z       "stages": {
2026-06-20T11:21:58.7531305Z         "doc": {
2026-06-20T11:21:58.7531430Z           "complete": false,
2026-06-20T11:21:58.7531568Z           "evidence": []
2026-06-20T11:21:58.7531682Z         },
2026-06-20T11:21:58.7531797Z         "impl": {
2026-06-20T11:21:58.7531934Z           "complete": true,
2026-06-20T11:21:58.7532050Z           "evidence": [
2026-06-20T11:21:58.7532172Z             {
2026-06-20T11:21:58.7532311Z               "path": "crates/spt/src/rc.rs",
2026-06-20T11:21:58.7532450Z               "line": 910
2026-06-20T11:21:58.7532573Z             }
2026-06-20T11:21:58.7532682Z           ]
2026-06-20T11:21:58.7532805Z         },
2026-06-20T11:21:58.7532927Z         "int": {
2026-06-20T11:21:58.7533052Z           "complete": false,
2026-06-20T11:21:58.7533181Z           "evidence": []
2026-06-20T11:21:58.7533305Z         },
2026-06-20T11:21:58.7533429Z         "unit": {
2026-06-20T11:21:58.7533557Z           "complete": true,
2026-06-20T11:21:58.7533692Z           "evidence": [
2026-06-20T11:21:58.7533810Z             {
2026-06-20T11:21:58.7533968Z               "path": "crates/spt/src/rc.rs",
2026-06-20T11:21:58.7534097Z               "line": 1112
2026-06-20T11:21:58.7534206Z             }
2026-06-20T11:21:58.7534331Z           ]
2026-06-20T11:21:58.7534444Z         }
2026-06-20T11:21:58.7534559Z       }
2026-06-20T11:21:58.7534678Z     },
2026-06-20T11:21:58.7534797Z     {
2026-06-20T11:21:58.7534975Z       "id": "REQ-HAZARD-RC-INPUT-KEY-ENCODING",
2026-06-20T11:21:58.7540117Z       "title": "An `spt rc` session forwards the Backspace key as the VT DEL byte (0x7f), so the hosted TUI (Claude Code) deletes ONE character — never a whole word. SYMPTOM (operator dogfooding): Backspace in an rc session always behaves like ctrl+Backspace — deletes the entire last word. ROOT (doyle /diagnose, code-grounded, byte PENDING HITL confirm): rc is a RAW VERBATIM byte pump — spawn_stdin_reader (rc.rs:152) reads std::io::stdin() bytes under crossterm raw mode and forwards them unchanged (parse_stdin_chunk only intercepts the ctrl-b detach prefix); there is NO key-event encoding and NO 0x08↔0x7f normalization ANYWHERE in the tree (grep: zero SetConsoleMode / ENABLE_VIRTUAL_TERMINAL_INPUT). On Windows, crossterm enable_raw_mode does NOT set ENABLE_VIRTUAL_TERMINAL_INPUT, so the LEGACY console delivers ^H (0x08, ctrl+h) for Backspace instead of VT DEL (0x7f); Claude Code maps ^H → backward-kill-word → the observed whole-word delete. CONFIRM-FIRST (build the loop): an env-gated hexdump in spawn_stdin_reader (SPT_RC_DEBUG_KEYS) prints the forwarded byte; operator presses Backspace + ctrl+Backspace in a real rc session. FIX CANDIDATES: (a) enable ENABLE_VIRTUAL_TERMINAL_INPUT on the rc stdin console on Windows so the console emits proper VT (Backspace→0x7f, arrows/Home/End as CSI) — cleanest, fixes the whole key map not just Backspace; (b) narrow normalize bare 0x08→0x7f in the rc input path (riskier — a real ctrl+h is also 0x08). Prefer (a) unless it regresses other keys. Add a KNOWN-HAZARDS.md entry on landing. (v0.13.0)",
2026-06-20T11:21:58.7540404Z       "requiredStages": [
2026-06-20T11:21:58.7540526Z         "impl",
2026-06-20T11:21:58.7540766Z         "unit"
2026-06-20T11:21:58.7540883Z       ],
2026-06-20T11:21:58.7541007Z       "stages": {
2026-06-20T11:21:58.7541127Z         "doc": {
2026-06-20T11:21:58.7541265Z           "complete": false,
2026-06-20T11:21:58.7541394Z           "evidence": []
2026-06-20T11:21:58.7541508Z         },
2026-06-20T11:21:58.7541637Z         "impl": {
2026-06-20T11:21:58.7541766Z           "complete": true,
2026-06-20T11:21:58.7541894Z           "evidence": [
2026-06-20T11:21:58.7542009Z             {
2026-06-20T11:21:58.7542165Z               "path": "crates/spt/src/rc.rs",
2026-06-20T11:21:58.7542291Z               "line": 264
2026-06-20T11:21:58.7542413Z             }
2026-06-20T11:21:58.7542538Z           ]
2026-06-20T11:21:58.7542653Z         },
2026-06-20T11:21:58.7542781Z         "int": {
2026-06-20T11:21:58.7542911Z           "complete": false,
2026-06-20T11:21:58.7543043Z           "evidence": []
2026-06-20T11:21:58.7543171Z         },
2026-06-20T11:21:58.7543281Z         "unit": {
2026-06-20T11:21:58.7543421Z           "complete": true,
2026-06-20T11:21:58.7543550Z           "evidence": [
2026-06-20T11:21:58.7543671Z             {
2026-06-20T11:21:58.7543821Z               "path": "crates/spt/src/rc.rs",
2026-06-20T11:21:58.7543956Z               "line": 1094
2026-06-20T11:21:58.7544079Z             },
2026-06-20T11:21:58.7544214Z             {
2026-06-20T11:21:58.7544370Z               "path": "crates/spt/src/rc.rs",
2026-06-20T11:21:58.7544500Z               "line": 1225
2026-06-20T11:21:58.7544613Z             },
2026-06-20T11:21:58.7544732Z             {
2026-06-20T11:21:58.7544881Z               "path": "crates/spt/src/rc.rs",
2026-06-20T11:21:58.7545000Z               "line": 1227
2026-06-20T11:21:58.7545114Z             }
2026-06-20T11:21:58.7545239Z           ]
2026-06-20T11:21:58.7545348Z         }
2026-06-20T11:21:58.7545463Z       }
2026-06-20T11:21:58.7545581Z     },
2026-06-20T11:21:58.7545681Z     {
2026-06-20T11:21:58.7545850Z       "id": "REQ-HAZARD-REGISTRY-CONCURRENT",
2026-06-20T11:21:58.7546181Z       "title": "Concurrent SQLite openers (registry/spool) must not fail with 'database is locked' (4.7)",
2026-06-20T11:21:58.7546322Z       "requiredStages": [
2026-06-20T11:21:58.7546441Z         "impl",
2026-06-20T11:21:58.7546561Z         "unit"
2026-06-20T11:21:58.7546684Z       ],
2026-06-20T11:21:58.7546813Z       "stages": {
2026-06-20T11:21:58.7546936Z         "doc": {
2026-06-20T11:21:58.7547061Z           "complete": true,
2026-06-20T11:21:58.7547185Z           "evidence": [
2026-06-20T11:21:58.7547299Z             {
2026-06-20T11:21:58.7547462Z               "path": "docs/KNOWN-HAZARDS.md",
2026-06-20T11:21:58.7547600Z               "line": 139
2026-06-20T11:21:58.7547720Z             }
2026-06-20T11:21:58.7547833Z           ]
2026-06-20T11:21:58.7547943Z         },
2026-06-20T11:21:58.7548073Z         "impl": {
2026-06-20T11:21:58.7548210Z           "complete": true,
2026-06-20T11:21:58.7548340Z           "evidence": [
2026-06-20T11:21:58.7548463Z             {
2026-06-20T11:21:58.7548633Z               "path": "crates/spt-store/src/db.rs",
2026-06-20T11:21:58.7548757Z               "line": 29
2026-06-20T11:21:58.7548875Z             },
2026-06-20T11:21:58.7549066Z             {
2026-06-20T11:21:58.7549236Z               "path": "crates/spt-store/src/notif.rs",
2026-06-20T11:21:58.7549371Z               "line": 101
2026-06-20T11:21:58.7549609Z             },
2026-06-20T11:21:58.7549723Z             {
2026-06-20T11:21:58.7549899Z               "path": "crates/spt-store/src/registry.rs",
2026-06-20T11:21:58.7550028Z               "line": 30
2026-06-20T11:21:58.7550147Z             },
2026-06-20T11:21:58.7550262Z             {
2026-06-20T11:21:58.7550429Z               "path": "crates/spt-store/src/spool.rs",
2026-06-20T11:21:58.7550558Z               "line": 48
2026-06-20T11:21:58.7550668Z             }
2026-06-20T11:21:58.7550791Z           ]
2026-06-20T11:21:58.7550902Z         },
2026-06-20T11:21:58.7551015Z         "int": {
2026-06-20T11:21:58.7551149Z           "complete": false,
2026-06-20T11:21:58.7551372Z           "evidence": []
2026-06-20T11:21:58.7551500Z         },
2026-06-20T11:21:58.7551616Z         "unit": {
2026-06-20T11:21:58.7551749Z           "complete": true,
2026-06-20T11:21:58.7551878Z           "evidence": [
2026-06-20T11:21:58.7551987Z             {
2026-06-20T11:21:58.7552163Z               "path": "crates/spt-store/src/registry.rs",
2026-06-20T11:21:58.7552293Z               "line": 162
2026-06-20T11:21:58.7552416Z             }
2026-06-20T11:21:58.7552522Z           ]
2026-06-20T11:21:58.7552640Z         }
2026-06-20T11:21:58.7552754Z       }
2026-06-20T11:21:58.7552875Z     },
2026-06-20T11:21:58.7552978Z     {
2026-06-20T11:21:58.7553132Z       "id": "REQ-HAZARD-REGISTRY-DIR-CREATE",
2026-06-20T11:21:58.7553598Z       "title": "SQLite store opens create their parent dir themselves — a fresh-home registry op must not SQLITE_CANTOPEN (4.9)",
2026-06-20T11:21:58.7553731Z       "requiredStages": [
2026-06-20T11:21:58.7553855Z         "doc",
2026-06-20T11:21:58.7553981Z         "impl",
2026-06-20T11:21:58.7554106Z         "unit"
2026-06-20T11:21:58.7554216Z       ],
2026-06-20T11:21:58.7554343Z       "stages": {
2026-06-20T11:21:58.7554468Z         "doc": {
2026-06-20T11:21:58.7554602Z           "complete": true,
2026-06-20T11:21:58.7554735Z           "evidence": [
2026-06-20T11:21:58.7554850Z             {
2026-06-20T11:21:58.7555006Z               "path": "docs/KNOWN-HAZARDS.md",
2026-06-20T11:21:58.7555136Z               "line": 151
2026-06-20T11:21:58.7555255Z             }
2026-06-20T11:21:58.7555379Z           ]
2026-06-20T11:21:58.7555493Z         },
2026-06-20T11:21:58.7555607Z         "impl": {
2026-06-20T11:21:58.7555737Z           "complete": true,
2026-06-20T11:21:58.7555864Z           "evidence": [
2026-06-20T11:21:58.7555984Z             {
2026-06-20T11:21:58.7556160Z               "path": "crates/spt-store/src/registry.rs",
2026-06-20T11:21:58.7556290Z               "line": 22
2026-06-20T11:21:58.7556405Z             }
2026-06-20T11:21:58.7556531Z           ]
2026-06-20T11:21:58.7556646Z         },
2026-06-20T11:21:58.7556769Z         "int": {
2026-06-20T11:21:58.7556906Z           "complete": false,
2026-06-20T11:21:58.7557035Z           "evidence": []
2026-06-20T11:21:58.7557159Z         },
2026-06-20T11:21:58.7557282Z         "unit": {
2026-06-20T11:21:58.7557416Z           "complete": true,
2026-06-20T11:21:58.7557549Z           "evidence": [
2026-06-20T11:21:58.7557675Z             {
2026-06-20T11:21:58.7557845Z               "path": "crates/spt-store/src/registry.rs",
2026-06-20T11:21:58.7557980Z               "line": 298
2026-06-20T11:21:58.7558108Z             }
2026-06-20T11:21:58.7558222Z           ]
2026-06-20T11:21:58.7558347Z         }
2026-06-20T11:21:58.7558460Z       }
2026-06-20T11:21:58.7558580Z     },
2026-06-20T11:21:58.7558694Z     {
2026-06-20T11:21:58.7558856Z       "id": "REQ-HAZARD-REGISTRY-EPOCH-LEASE",
2026-06-20T11:21:58.7559477Z       "title": "Registry merge ordered by per-node monotonic epoch, never wall-clock — a stale Active can't clobber a newer Offline (4.8, red-team #8)",
2026-06-20T11:21:58.7559621Z       "requiredStages": [
2026-06-20T11:21:58.7559744Z         "impl",
2026-06-20T11:21:58.7559854Z         "unit"
2026-06-20T11:21:58.7559969Z       ],
2026-06-20T11:21:58.7560087Z       "stages": {
2026-06-20T11:21:58.7560218Z         "doc": {
2026-06-20T11:21:58.7560464Z           "complete": true,
2026-06-20T11:21:58.7560598Z           "evidence": [
2026-06-20T11:21:58.7560721Z             {
2026-06-20T11:21:58.7560871Z               "path": "docs/KNOWN-HAZARDS.md",
2026-06-20T11:21:58.7560994Z               "line": 145
2026-06-20T11:21:58.7561123Z             }
2026-06-20T11:21:58.7561242Z           ]
2026-06-20T11:21:58.7561370Z         },
2026-06-20T11:21:58.7561481Z         "impl": {
2026-06-20T11:21:58.7561618Z           "complete": true,
2026-06-20T11:21:58.7561743Z           "evidence": [
2026-06-20T11:21:58.7561862Z             {
2026-06-20T11:21:58.7562036Z               "path": "crates/spt-daemon/src/pump/update.rs",
2026-06-20T11:21:58.7562275Z               "line": 160
2026-06-20T11:21:58.7562380Z             },
2026-06-20T11:21:58.7562500Z             {
2026-06-20T11:21:58.7562694Z               "path": "crates/spt-daemon/src/registryhost.rs",
2026-06-20T11:21:58.7562820Z               "line": 200
2026-06-20T11:21:58.7562938Z             },
2026-06-20T11:21:58.7563043Z             {
2026-06-20T11:21:58.7563210Z               "path": "crates/spt-net/src/net/registry.rs",
2026-06-20T11:21:58.7563338Z               "line": 298
2026-06-20T11:21:58.7563444Z             },
2026-06-20T11:21:58.7563568Z             {
2026-06-20T11:21:58.7563731Z               "path": "crates/spt-store/src/epoch.rs",
2026-06-20T11:21:58.7563853Z               "line": 20
2026-06-20T11:21:58.7563963Z             }
2026-06-20T11:21:58.7564074Z           ]
2026-06-20T11:21:58.7564187Z         },
2026-06-20T11:21:58.7564296Z         "int": {
2026-06-20T11:21:58.7564443Z           "complete": false,
2026-06-20T11:21:58.7564570Z           "evidence": []
2026-06-20T11:21:58.7564694Z         },
2026-06-20T11:21:58.7564818Z         "unit": {
2026-06-20T11:21:58.7564942Z           "complete": true,
2026-06-20T11:21:58.7565077Z           "evidence": [
2026-06-20T11:21:58.7565195Z             {
2026-06-20T11:21:58.7565377Z               "path": "crates/spt-daemon/src/registryhost.rs",
2026-06-20T11:21:58.7565510Z               "line": 937
2026-06-20T11:21:58.7565630Z             },
2026-06-20T11:21:58.7565744Z             {
2026-06-20T11:21:58.7565920Z               "path": "crates/spt-daemon/tests/replicate.rs",
2026-06-20T11:21:58.7566044Z               "line": 88
2026-06-20T11:21:58.7566167Z             },
2026-06-20T11:21:58.7566278Z             {
2026-06-20T11:21:58.7566449Z               "path": "crates/spt-net/src/net/registry.rs",
2026-06-20T11:21:58.7566579Z               "line": 851
2026-06-20T11:21:58.7566702Z             },
2026-06-20T11:21:58.7566811Z             {
2026-06-20T11:21:58.7566989Z               "path": "crates/spt-net/src/net/registry.rs",
2026-06-20T11:21:58.7567115Z               "line": 870
2026-06-20T11:21:58.7567240Z             },
2026-06-20T11:21:58.7567357Z             {
2026-06-20T11:21:58.7567523Z               "path": "crates/spt-net/src/net/replicate.rs",
2026-06-20T11:21:58.7567657Z               "line": 279
2026-06-20T11:21:58.7567761Z             },
2026-06-20T11:21:58.7567881Z             {
2026-06-20T11:21:58.7568034Z               "path": "crates/spt-store/src/epoch.rs",
2026-06-20T11:21:58.7568162Z               "line": 82
2026-06-20T11:21:58.7568282Z             },
2026-06-20T11:21:58.7568405Z             {
2026-06-20T11:21:58.7568573Z               "path": "crates/spt-store/src/epoch.rs",
2026-06-20T11:21:58.7568701Z               "line": 99
2026-06-20T11:21:58.7568826Z             },
2026-06-20T11:21:58.7569034Z             {
2026-06-20T11:21:58.7569203Z               "path": "crates/spt-store/src/epoch.rs",
2026-06-20T11:21:58.7569325Z               "line": 119
2026-06-20T11:21:58.7569451Z             }
2026-06-20T11:21:58.7569574Z           ]
2026-06-20T11:21:58.7569687Z         }
2026-06-20T11:21:58.7569811Z       }
2026-06-20T11:21:58.7569919Z     },
2026-06-20T11:21:58.7570042Z     {
2026-06-20T11:21:58.7570200Z       "id": "REQ-HAZARD-REGISTRY-GHOST-ROWS",
2026-06-20T11:21:58.7571688Z       "title": "A dead node identity's registry rows must decay: only the per-(endpoint,node) epoch lease supersedes rows, so without eviction a vanished node's rows are immortal and poison bare-id resolution with phantom AcrossNodes ambiguity — evict rows whose author node has not been heard (admitted inbound feed) within the eviction window; own rows never decay; a revived node re-inserts from its durable epoch within one pump cadence (4.10)",
2026-06-20T11:21:58.7571940Z       "requiredStages": [
2026-06-20T11:21:58.7572056Z         "doc",
2026-06-20T11:21:58.7572178Z         "impl",
2026-06-20T11:21:58.7572298Z         "unit"
2026-06-20T11:21:58.7572423Z       ],
2026-06-20T11:21:58.7572550Z       "stages": {
2026-06-20T11:21:58.7572755Z         "doc": {
2026-06-20T11:21:58.7572888Z           "complete": true,
2026-06-20T11:21:58.7573012Z           "evidence": [
2026-06-20T11:21:58.7573155Z             {
2026-06-20T11:21:58.7573333Z               "path": "docs/KNOWN-HAZARDS.md",
2026-06-20T11:21:58.7573484Z               "line": 157
2026-06-20T11:21:58.7573594Z             }
2026-06-20T11:21:58.7573708Z           ]
2026-06-20T11:21:58.7573832Z         },
2026-06-20T11:21:58.7573952Z         "impl": {
2026-06-20T11:21:58.7574080Z           "complete": true,
2026-06-20T11:21:58.7574203Z           "evidence": [
2026-06-20T11:21:58.7574319Z             {
2026-06-20T11:21:58.7574504Z               "path": "crates/spt-daemon/src/pump/registry.rs",
2026-06-20T11:21:58.7574634Z               "line": 137
2026-06-20T11:21:58.7574757Z             },
2026-06-20T11:21:58.7574870Z             {
2026-06-20T11:21:58.7575059Z               "path": "crates/spt-daemon/src/registryhost.rs",
2026-06-20T11:21:58.7575187Z               "line": 564
2026-06-20T11:21:58.7575317Z             },
2026-06-20T11:21:58.7575426Z             {
2026-06-20T11:21:58.7575603Z               "path": "crates/spt-daemon/src/registryhost.rs",
2026-06-20T11:21:58.7575731Z               "line": 571
2026-06-20T11:21:58.7575845Z             },
2026-06-20T11:21:58.7575970Z             {
2026-06-20T11:21:58.7576151Z               "path": "crates/spt-net/src/net/registry.rs",
2026-06-20T11:21:58.7576285Z               "line": 227
2026-06-20T11:21:58.7576403Z             }
2026-06-20T11:21:58.7576514Z           ]
2026-06-20T11:21:58.7576637Z         },
2026-06-20T11:21:58.7576742Z         "int": {
2026-06-20T11:21:58.7576872Z           "complete": false,
2026-06-20T11:21:58.7576989Z           "evidence": []
2026-06-20T11:21:58.7577110Z         },
2026-06-20T11:21:58.7577239Z         "unit": {
2026-06-20T11:21:58.7577372Z           "complete": true,
2026-06-20T11:21:58.7577501Z           "evidence": [
2026-06-20T11:21:58.7577614Z             {
2026-06-20T11:21:58.7577809Z               "path": "crates/spt-daemon/src/registryhost.rs",
2026-06-20T11:21:58.7577936Z               "line": 1622
2026-06-20T11:21:58.7578045Z             },
2026-06-20T11:21:58.7578155Z             {
2026-06-20T11:21:58.7578331Z               "path": "crates/spt-daemon/src/registryhost.rs",
2026-06-20T11:21:58.7578466Z               "line": 1680
2026-06-20T11:21:58.7578585Z             },
2026-06-20T11:21:58.7578703Z             {
2026-06-20T11:21:58.7578875Z               "path": "crates/spt-net/src/net/registry.rs",
2026-06-20T11:21:58.7579085Z               "line": 883
2026-06-20T11:21:58.7579203Z             }
2026-06-20T11:21:58.7579318Z           ]
2026-06-20T11:21:58.7579439Z         }
2026-06-20T11:21:58.7579546Z       }
2026-06-20T11:21:58.7579657Z     },
2026-06-20T11:21:58.7579768Z     {
2026-06-20T11:21:58.7579938Z       "id": "REQ-HAZARD-REGISTRY-STALE-CLEAN",
2026-06-20T11:21:58.7580200Z       "title": "Stale registry entries degrade to fallback, never hard-fail (4.3)",
2026-06-20T11:21:58.7580338Z       "requiredStages": [
2026-06-20T11:21:58.7580456Z         "impl",
2026-06-20T11:21:58.7580573Z         "unit"
2026-06-20T11:21:58.7580698Z       ],
2026-06-20T11:21:58.7580822Z       "stages": {
2026-06-20T11:21:58.7580945Z         "doc": {
2026-06-20T11:21:58.7581075Z           "complete": false,
2026-06-20T11:21:58.7581313Z           "evidence": []
2026-06-20T11:21:58.7581437Z         },
2026-06-20T11:21:58.7581560Z         "impl": {
2026-06-20T11:21:58.7581695Z           "complete": true,
2026-06-20T11:21:58.7581827Z           "evidence": [
2026-06-20T11:21:58.7581938Z             {
2026-06-20T11:21:58.7582110Z               "path": "crates/spt-store/src/proc.rs",
2026-06-20T11:21:58.7582233Z               "line": 15
2026-06-20T11:21:58.7582358Z             },
2026-06-20T11:21:58.7582471Z             {
2026-06-20T11:21:58.7582654Z               "path": "crates/spt-store/src/registry.rs",
2026-06-20T11:21:58.7582786Z               "line": 55
2026-06-20T11:21:58.7582902Z             },
2026-06-20T11:21:58.7583147Z             {
2026-06-20T11:21:58.7583310Z               "path": "crates/spt-store/src/registry.rs",
2026-06-20T11:21:58.7583438Z               "line": 66
2026-06-20T11:21:58.7583553Z             },
2026-06-20T11:21:58.7583673Z             {
2026-06-20T11:21:58.7583844Z               "path": "crates/spt-store/src/registry.rs",
2026-06-20T11:21:58.7583982Z               "line": 115
2026-06-20T11:21:58.7584106Z             },
2026-06-20T11:21:58.7584231Z             {
2026-06-20T11:21:58.7584401Z               "path": "crates/spt-store/src/registry.rs",
2026-06-20T11:21:58.7584531Z               "line": 138
2026-06-20T11:21:58.7584654Z             }
2026-06-20T11:21:58.7584773Z           ]
2026-06-20T11:21:58.7584894Z         },
2026-06-20T11:21:58.7585016Z         "int": {
2026-06-20T11:21:58.7585151Z           "complete": false,
2026-06-20T11:21:58.7585283Z           "evidence": []
2026-06-20T11:21:58.7585416Z         },
2026-06-20T11:21:58.7585540Z         "unit": {
2026-06-20T11:21:58.7585690Z           "complete": true,
2026-06-20T11:21:58.7585820Z           "evidence": [
2026-06-20T11:21:58.7585934Z             {
2026-06-20T11:21:58.7586091Z               "path": "crates/spt-store/src/proc.rs",
2026-06-20T11:21:58.7586220Z               "line": 363
2026-06-20T11:21:58.7586329Z             },
2026-06-20T11:21:58.7586459Z             {
2026-06-20T11:21:58.7586630Z               "path": "crates/spt-store/src/proc.rs",
2026-06-20T11:21:58.7586755Z               "line": 369
2026-06-20T11:21:58.7586874Z             },
2026-06-20T11:21:58.7586987Z             {
2026-06-20T11:21:58.7587145Z               "path": "crates/spt-store/src/proc.rs",
2026-06-20T11:21:58.7587274Z               "line": 383
2026-06-20T11:21:58.7587394Z             },
2026-06-20T11:21:58.7587517Z             {
2026-06-20T11:21:58.7587665Z               "path": "crates/spt-store/src/proc.rs",
2026-06-20T11:21:58.7587794Z               "line": 392
2026-06-20T11:21:58.7587903Z             },
2026-06-20T11:21:58.7588023Z             {
2026-06-20T11:21:58.7588189Z               "path": "crates/spt-store/src/registry.rs",
2026-06-20T11:21:58.7588316Z               "line": 195
2026-06-20T11:21:58.7588426Z             },
2026-06-20T11:21:58.7588539Z             {
2026-06-20T11:21:58.7588701Z               "path": "crates/spt-store/src/registry.rs",
2026-06-20T11:21:58.7588825Z               "line": 208
2026-06-20T11:21:58.7589035Z             },
2026-06-20T11:21:58.7589149Z             {
2026-06-20T11:21:58.7589317Z               "path": "crates/spt-store/src/registry.rs",
2026-06-20T11:21:58.7589440Z               "line": 271
2026-06-20T11:21:58.7589558Z             },
2026-06-20T11:21:58.7589674Z             {
2026-06-20T11:21:58.7589840Z               "path": "crates/spt-store/src/registry.rs",
2026-06-20T11:21:58.7589965Z               "line": 290
2026-06-20T11:21:58.7590079Z             },
2026-06-20T11:21:58.7590183Z             {
2026-06-20T11:21:58.7590356Z               "path": "crates/spt-store/src/registry.rs",
2026-06-20T11:21:58.7590480Z               "line": 319
2026-06-20T11:21:58.7590605Z             }
2026-06-20T11:21:58.7590727Z           ]
2026-06-20T11:21:58.7590840Z         }
2026-06-20T11:21:58.7590964Z       }
2026-06-20T11:21:58.7591077Z     },
2026-06-20T11:21:58.7591195Z     {
2026-06-20T11:21:58.7591345Z       "id": "REQ-HAZARD-RESTART-IDEMPOTENT",
2026-06-20T11:21:58.7591811Z       "title": "Idempotent/exactly-once delivery across brain restart at every broker boundary (codex #14)",
2026-06-20T11:21:58.7591945Z       "requiredStages": [
2026-06-20T11:21:58.7592073Z         "impl",
2026-06-20T11:21:58.7592198Z         "unit",
2026-06-20T11:21:58.7592316Z         "int"
2026-06-20T11:21:58.7592440Z       ],
2026-06-20T11:21:58.7592566Z       "stages": {
2026-06-20T11:21:58.7592694Z         "doc": {
2026-06-20T11:21:58.7592823Z           "complete": false,
2026-06-20T11:21:58.7592960Z           "evidence": []
2026-06-20T11:21:58.7593079Z         },
2026-06-20T11:21:58.7593200Z         "impl": {
2026-06-20T11:21:58.7593433Z           "complete": true,
2026-06-20T11:21:58.7593562Z           "evidence": [
2026-06-20T11:21:58.7593689Z             {
2026-06-20T11:21:58.7593856Z               "path": "crates/spt-daemon/src/brain.rs",
2026-06-20T11:21:58.7593993Z               "line": 455
2026-06-20T11:21:58.7594113Z             },
2026-06-20T11:21:58.7594243Z             {
2026-06-20T11:21:58.7594419Z               "path": "crates/spt-daemon/src/brain.rs",
2026-06-20T11:21:58.7594538Z               "line": 895
2026-06-20T11:21:58.7594661Z             },
2026-06-20T11:21:58.7594762Z             {
2026-06-20T11:21:58.7594933Z               "path": "crates/spt-daemon/src/brain.rs",
2026-06-20T11:21:58.7595067Z               "line": 940
2026-06-20T11:21:58.7595181Z             },
2026-06-20T11:21:58.7595310Z             {
2026-06-20T11:21:58.7595468Z               "path": "crates/spt-daemon/src/brain.rs",
2026-06-20T11:21:58.7595600Z               "line": 965
2026-06-20T11:21:58.7595716Z             },
2026-06-20T11:21:58.7595843Z             {
2026-06-20T11:21:58.7596015Z               "path": "crates/spt-daemon/src/broker.rs",
2026-06-20T11:21:58.7596147Z               "line": 1588
2026-06-20T11:21:58.7596279Z             },
2026-06-20T11:21:58.7596394Z             {
2026-06-20T11:21:58.7596565Z               "path": "crates/spt-daemon/src/broker.rs",
2026-06-20T11:21:58.7596680Z               "line": 1833
2026-06-20T11:21:58.7596804Z             },
2026-06-20T11:21:58.7596927Z             {
2026-06-20T11:21:58.7597090Z               "path": "crates/spt-daemon/src/broker.rs",
2026-06-20T11:21:58.7597218Z               "line": 1964
2026-06-20T11:21:58.7597339Z             },
2026-06-20T11:21:58.7597457Z             {
2026-06-20T11:21:58.7597624Z               "path": "crates/spt-daemon/src/broker.rs",
2026-06-20T11:21:58.7597757Z               "line": 2012
2026-06-20T11:21:58.7597876Z             },
2026-06-20T11:21:58.7597983Z             {
2026-06-20T11:21:58.7598149Z               "path": "crates/spt-daemon/src/effect.rs",
2026-06-20T11:21:58.7598278Z               "line": 46
2026-06-20T11:21:58.7598401Z             },
2026-06-20T11:21:58.7598520Z             {
2026-06-20T11:21:58.7598692Z               "path": "crates/spt-daemon/src/effect.rs",
2026-06-20T11:21:58.7598829Z               "line": 200
2026-06-20T11:21:58.7599019Z             },
2026-06-20T11:21:58.7599141Z             {
2026-06-20T11:21:58.7599305Z               "path": "crates/spt-daemon/src/wan.rs",
2026-06-20T11:21:58.7599432Z               "line": 132
2026-06-20T11:21:58.7599557Z             },
2026-06-20T11:21:58.7599676Z             {
2026-06-20T11:21:58.7599843Z               "path": "crates/spt-store/src/spool.rs",
2026-06-20T11:21:58.7599977Z               "line": 137
2026-06-20T11:21:58.7600104Z             },
2026-06-20T11:21:58.7600229Z             {
2026-06-20T11:21:58.7600396Z               "path": "crates/spt-store/src/spool.rs",
2026-06-20T11:21:58.7600530Z               "line": 183
2026-06-20T11:21:58.7600649Z             }
2026-06-20T11:21:58.7600772Z           ]
2026-06-20T11:21:58.7600883Z         },
2026-06-20T11:21:58.7601010Z         "int": {
2026-06-20T11:21:58.7601150Z           "complete": true,
2026-06-20T11:21:58.7601278Z           "evidence": [
2026-06-20T11:21:58.7601400Z             {
2026-06-20T11:21:58.7601590Z               "path": "crates/spt-daemon/tests/idempotent.rs",
2026-06-20T11:21:58.7601842Z               "line": 27
2026-06-20T11:21:58.7601957Z             },
2026-06-20T11:21:58.7602066Z             {
2026-06-20T11:21:58.7602243Z               "path": "crates/spt-daemon/tests/netbroker.rs",
2026-06-20T11:21:58.7602371Z               "line": 148
2026-06-20T11:21:58.7602482Z             },
2026-06-20T11:21:58.7602596Z             {
2026-06-20T11:21:58.7602772Z               "path": "crates/spt-daemon/tests/netstream.rs",
2026-06-20T11:21:58.7602900Z               "line": 200
2026-06-20T11:21:58.7603015Z             }
2026-06-20T11:21:58.7603130Z           ]
2026-06-20T11:21:58.7603263Z         },
2026-06-20T11:21:58.7603393Z         "unit": {
2026-06-20T11:21:58.7603625Z           "complete": true,
2026-06-20T11:21:58.7603750Z           "evidence": [
2026-06-20T11:21:58.7603858Z             {
2026-06-20T11:21:58.7604032Z               "path": "crates/spt-daemon/src/effect.rs",
2026-06-20T11:21:58.7604155Z               "line": 366
2026-06-20T11:21:58.7604287Z             },
2026-06-20T11:21:58.7604417Z             {
2026-06-20T11:21:58.7604577Z               "path": "crates/spt-daemon/src/effect.rs",
2026-06-20T11:21:58.7604707Z               "line": 398
2026-06-20T11:21:58.7604826Z             },
2026-06-20T11:21:58.7604945Z             {
2026-06-20T11:21:58.7605102Z               "path": "crates/spt-daemon/src/effect.rs",
2026-06-20T11:21:58.7605231Z               "line": 419
2026-06-20T11:21:58.7605346Z             },
2026-06-20T11:21:58.7605460Z             {
2026-06-20T11:21:58.7605637Z               "path": "crates/spt-daemon/tests/attach.rs",
2026-06-20T11:21:58.7605765Z               "line": 628
2026-06-20T11:21:58.7605894Z             },
2026-06-20T11:21:58.7606000Z             {
2026-06-20T11:21:58.7609669Z               "path": "crates/spt-daemon/tests/wanmsg.rs",
2026-06-20T11:21:58.7609840Z               "line": 289
2026-06-20T11:21:58.7609964Z             },
2026-06-20T11:21:58.7610088Z             {
2026-06-20T11:21:58.7610260Z               "path": "crates/spt-daemon/tests/xfer.rs",
2026-06-20T11:21:58.7610403Z               "line": 230
2026-06-20T11:21:58.7610522Z             },
2026-06-20T11:21:58.7610646Z             {
2026-06-20T11:21:58.7610823Z               "path": "crates/spt-store/src/spool.rs",
2026-06-20T11:21:58.7610946Z               "line": 526
2026-06-20T11:21:58.7611066Z             },
2026-06-20T11:21:58.7611185Z             {
2026-06-20T11:21:58.7611347Z               "path": "crates/spt-store/src/spool.rs",
2026-06-20T11:21:58.7611476Z               "line": 556
2026-06-20T11:21:58.7611595Z             }
2026-06-20T11:21:58.7611720Z           ]
2026-06-20T11:21:58.7611829Z         }
2026-06-20T11:21:58.7611960Z       }
2026-06-20T11:21:58.7612071Z     },
2026-06-20T11:21:58.7612192Z     {
2026-06-20T11:21:58.7612359Z       "id": "REQ-HAZARD-ROLLBACK-STATE-COMPAT",
2026-06-20T11:21:58.7614344Z       "title": "A brain must not irreversibly migrate durable state before update ready-promotion: the readiness-gated auto-rollback (ADR-0018 Q7) spawns the N-1 binary against durable state the new brain may have written, so every pre-ready write must stay N-1-readable (schema migrations gated behind ready-promotion, or written N-1-tolerant/additive). Else the first in-place schema migration silently bricks rollback (KNOWN-HAZARDS 6.8). Free now — a 2026-06-09 audit confirmed zero state-migration code exists; unmintable retroactively once a migration ships.",
2026-06-20T11:21:58.7614491Z       "requiredStages": [
2026-06-20T11:21:58.7614606Z         "doc",
2026-06-20T11:21:58.7614733Z         "impl",
2026-06-20T11:21:58.7614847Z         "unit"
2026-06-20T11:21:58.7614967Z       ],
2026-06-20T11:21:58.7615090Z       "stages": {
2026-06-20T11:21:58.7615219Z         "doc": {
2026-06-20T11:21:58.7615348Z           "complete": true,
2026-06-20T11:21:58.7615476Z           "evidence": [
2026-06-20T11:21:58.7615582Z             {
2026-06-20T11:21:58.7615739Z               "path": "docs/KNOWN-HAZARDS.md",
2026-06-20T11:21:58.7615873Z               "line": 314
2026-06-20T11:21:58.7616149Z             }
2026-06-20T11:21:58.7616279Z           ]
2026-06-20T11:21:58.7616392Z         },
2026-06-20T11:21:58.7616512Z         "impl": {
2026-06-20T11:21:58.7616654Z           "complete": true,
2026-06-20T11:21:58.7616788Z           "evidence": [
2026-06-20T11:21:58.7616894Z             {
2026-06-20T11:21:58.7617091Z               "path": "crates/spt-daemon/src/rollback_compat.rs",
2026-06-20T11:21:58.7617216Z               "line": 33
2026-06-20T11:21:58.7617337Z             },
2026-06-20T11:21:58.7617442Z             {
2026-06-20T11:21:58.7617633Z               "path": "crates/spt-daemon/src/rollback_compat.rs",
2026-06-20T11:21:58.7617853Z               "line": 39
2026-06-20T11:21:58.7617967Z             }
2026-06-20T11:21:58.7618086Z           ]
2026-06-20T11:21:58.7618191Z         },
2026-06-20T11:21:58.7618319Z         "int": {
2026-06-20T11:21:58.7618449Z           "complete": false,
2026-06-20T11:21:58.7618587Z           "evidence": []
2026-06-20T11:21:58.7618710Z         },
2026-06-20T11:21:58.7618835Z         "unit": {
2026-06-20T11:21:58.7619055Z           "complete": true,
2026-06-20T11:21:58.7619178Z           "evidence": [
2026-06-20T11:21:58.7619297Z             {
2026-06-20T11:21:58.7619474Z               "path": "crates/spt-daemon/src/rollback_compat.rs",
2026-06-20T11:21:58.7619612Z               "line": 95
2026-06-20T11:21:58.7619737Z             }
2026-06-20T11:21:58.7619850Z           ]
2026-06-20T11:21:58.7619977Z         }
2026-06-20T11:21:58.7620088Z       }
2026-06-20T11:21:58.7620209Z     },
2026-06-20T11:21:58.7620319Z     {
2026-06-20T11:21:58.7620468Z       "id": "REQ-HAZARD-ROSTER-GHOST",
2026-06-20T11:21:58.7623239Z       "title": "A LOCAL subnet roster entry whose backing perch is erased does NOT keep advertising Active (no phantom perch-less endpoint). `api session-end <id> --erase` removes the perch (owlery dir gone) but the subnet roster (identity/registry/<subnet>.json) keeps the endpoint's instance row ACTIVE with no backing perch; `endpoint stop` says 'address unregistered' yet the line persists; no CLI verb forgets a roster entry, and a hand-edit is re-added by the single-writer daemon advertiser. FIX: daemon-side self-heal — the advertiser DROPS/forgets a LOCAL roster entry whose backing perch no longer exists (stops advertising it Active), and/or a `forget`/evict verb; verify whether the epoch lease eventually evicts it (slow-self-heal) vs a real leak and scope accordingly. doyle secondary finding (perri). (post-v0.10.0)",
2026-06-20T11:21:58.7623392Z       "requiredStages": [
2026-06-20T11:21:58.7623501Z         "impl",
2026-06-20T11:21:58.7623616Z         "unit"
2026-06-20T11:21:58.7623735Z       ],
2026-06-20T11:21:58.7623859Z       "stages": {
2026-06-20T11:21:58.7623978Z         "doc": {
2026-06-20T11:21:58.7624111Z           "complete": false,
2026-06-20T11:21:58.7624241Z           "evidence": []
2026-06-20T11:21:58.7624359Z         },
2026-06-20T11:21:58.7624484Z         "impl": {
2026-06-20T11:21:58.7624621Z           "complete": true,
2026-06-20T11:21:58.7624755Z           "evidence": [
2026-06-20T11:21:58.7624866Z             {
2026-06-20T11:21:58.7625070Z               "path": "crates/spt-daemon/src/registryhost.rs",
2026-06-20T11:21:58.7625209Z               "line": 488
2026-06-20T11:21:58.7625322Z             }
2026-06-20T11:21:58.7625440Z           ]
2026-06-20T11:21:58.7625547Z         },
2026-06-20T11:21:58.7625674Z         "int": {
2026-06-20T11:21:58.7625818Z           "complete": false,
2026-06-20T11:21:58.7625942Z           "evidence": []
2026-06-20T11:21:58.7626050Z         },
2026-06-20T11:21:58.7626181Z         "unit": {
2026-06-20T11:21:58.7626313Z           "complete": true,
2026-06-20T11:21:58.7626448Z           "evidence": [
2026-06-20T11:21:58.7626585Z             {
2026-06-20T11:21:58.7626772Z               "path": "crates/spt-daemon/src/registryhost.rs",
2026-06-20T11:21:58.7626895Z               "line": 1466
2026-06-20T11:21:58.7627014Z             }
2026-06-20T11:21:58.7627130Z           ]
2026-06-20T11:21:58.7627397Z         }
2026-06-20T11:21:58.7627519Z       }
2026-06-20T11:21:58.7627643Z     },
2026-06-20T11:21:58.7627752Z     {
2026-06-20T11:21:58.7627902Z       "id": "REQ-HAZARD-SELF-ELEVATE",
2026-06-20T11:21:58.7630500Z       "title": "Self-elevation (REQ-ELEVATE-1) re-runs the EXACT original invocation with the binary's ABSOLUTE exe path — never widening privilege scope, never adding/altering args, never via a PATH-resolved bare name, never via a shell-interpolated command string (argv-array only, no `sh -c`); the elevated child drops state back to the user (composes with the 5.7 de-elevation) and NEVER re-elevates (loop-safe: decide_elevation_path returns AlreadyElevated whenever the process is already Elevated, on every OS). The user's UAC/polkit/sudo prompt is the only consent gate — we never bypass it; the print-hint floor prints the absolute-path command too. The unprivileged parent never depends on (pipes/captures) the privileged child's stdout.",
2026-06-20T11:21:58.7630755Z       "requiredStages": [
2026-06-20T11:21:58.7630889Z         "unit"
2026-06-20T11:21:58.7631009Z       ],
2026-06-20T11:21:58.7631132Z       "stages": {
2026-06-20T11:21:58.7631262Z         "doc": {
2026-06-20T11:21:58.7631394Z           "complete": false,
2026-06-20T11:21:58.7631538Z           "evidence": []
2026-06-20T11:21:58.7631666Z         },
2026-06-20T11:21:58.7631794Z         "impl": {
2026-06-20T11:21:58.7631925Z           "complete": true,
2026-06-20T11:21:58.7632043Z           "evidence": [
2026-06-20T11:21:58.7632167Z             {
2026-06-20T11:21:58.7632309Z               "path": "crates/spt/src/cli.rs",
2026-06-20T11:21:58.7632439Z               "line": 3520
2026-06-20T11:21:58.7632564Z             },
2026-06-20T11:21:58.7632681Z             {
2026-06-20T11:21:58.7632835Z               "path": "crates/spt/src/cli.rs",
2026-06-20T11:21:58.7632963Z               "line": 3572
2026-06-20T11:21:58.7633085Z             },
2026-06-20T11:21:58.7633205Z             {
2026-06-20T11:21:58.7633356Z               "path": "crates/spt/src/cli.rs",
2026-06-20T11:21:58.7633479Z               "line": 3617
2026-06-20T11:21:58.7633604Z             },
2026-06-20T11:21:58.7633722Z             {
2026-06-20T11:21:58.7633881Z               "path": "crates/spt/src/elevation.rs",
2026-06-20T11:21:58.7634018Z               "line": 92
2026-06-20T11:21:58.7634134Z             },
2026-06-20T11:21:58.7634248Z             {
2026-06-20T11:21:58.7634400Z               "path": "crates/spt/src/elevation.rs",
2026-06-20T11:21:58.7634538Z               "line": 148
2026-06-20T11:21:58.7634662Z             },
2026-06-20T11:21:58.7634782Z             {
2026-06-20T11:21:58.7634948Z               "path": "crates/spt/src/elevation.rs",
2026-06-20T11:21:58.7635078Z               "line": 192
2026-06-20T11:21:58.7635196Z             },
2026-06-20T11:21:58.7635311Z             {
2026-06-20T11:21:58.7635473Z               "path": "crates/spt/src/elevation.rs",
2026-06-20T11:21:58.7635601Z               "line": 200
2026-06-20T11:21:58.7635707Z             },
2026-06-20T11:21:58.7635839Z             {
2026-06-20T11:21:58.7635991Z               "path": "crates/spt/src/elevation.rs",
2026-06-20T11:21:58.7636121Z               "line": 211
2026-06-20T11:21:58.7636239Z             },
2026-06-20T11:21:58.7636359Z             {
2026-06-20T11:21:58.7636516Z               "path": "crates/spt/src/elevation.rs",
2026-06-20T11:21:58.7636644Z               "line": 265
2026-06-20T11:21:58.7636769Z             },
2026-06-20T11:21:58.7636883Z             {
2026-06-20T11:21:58.7637046Z               "path": "crates/spt/src/elevation.rs",
2026-06-20T11:21:58.7637165Z               "line": 279
2026-06-20T11:21:58.7637279Z             }
2026-06-20T11:21:58.7637408Z           ]
2026-06-20T11:21:58.7637527Z         },
2026-06-20T11:21:58.7637638Z         "int": {
2026-06-20T11:21:58.7637774Z           "complete": false,
2026-06-20T11:21:58.7637899Z           "evidence": []
2026-06-20T11:21:58.7638009Z         },
2026-06-20T11:21:58.7638136Z         "unit": {
2026-06-20T11:21:58.7638265Z           "complete": true,
2026-06-20T11:21:58.7638491Z           "evidence": [
2026-06-20T11:21:58.7638615Z             {
2026-06-20T11:21:58.7638773Z               "path": "crates/spt/src/elevation.rs",
2026-06-20T11:21:58.7638896Z               "line": 419
2026-06-20T11:21:58.7639106Z             },
2026-06-20T11:21:58.7639231Z             {
2026-06-20T11:21:58.7639393Z               "path": "crates/spt/src/elevation.rs",
2026-06-20T11:21:58.7639512Z               "line": 470
2026-06-20T11:21:58.7639627Z             },
2026-06-20T11:21:58.7639741Z             {
2026-06-20T11:21:58.7639908Z               "path": "crates/spt/src/elevation.rs",
2026-06-20T11:21:58.7640037Z               "line": 499
2026-06-20T11:21:58.7640261Z             },
2026-06-20T11:21:58.7640385Z             {
2026-06-20T11:21:58.7640543Z               "path": "crates/spt/src/elevation.rs",
2026-06-20T11:21:58.7640669Z               "line": 526
2026-06-20T11:21:58.7640776Z             }
2026-06-20T11:21:58.7640891Z           ]
2026-06-20T11:21:58.7641008Z         }
2026-06-20T11:21:58.7641127Z       }
2026-06-20T11:21:58.7641246Z     },
2026-06-20T11:21:58.7641358Z     {
2026-06-20T11:21:58.7641516Z       "id": "REQ-HAZARD-SINGLE-PATH-SOURCE",
2026-06-20T11:21:58.7641773Z       "title": "Single path/registry source of truth; no layout ambiguity (6.1)",
2026-06-20T11:21:58.7641917Z       "requiredStages": [
2026-06-20T11:21:58.7642035Z         "impl",
2026-06-20T11:21:58.7642146Z         "unit"
2026-06-20T11:21:58.7642265Z       ],
2026-06-20T11:21:58.7642379Z       "stages": {
2026-06-20T11:21:58.7642494Z         "doc": {
2026-06-20T11:21:58.7642626Z           "complete": false,
2026-06-20T11:21:58.7642761Z           "evidence": []
2026-06-20T11:21:58.7642874Z         },
2026-06-20T11:21:58.7642999Z         "impl": {
2026-06-20T11:21:58.7643133Z           "complete": true,
2026-06-20T11:21:58.7643256Z           "evidence": [
2026-06-20T11:21:58.7643377Z             {
2026-06-20T11:21:58.7643565Z               "path": "crates/spt-store/src/contextstore.rs",
2026-06-20T11:21:58.7643694Z               "line": 62
2026-06-20T11:21:58.7643808Z             },
2026-06-20T11:21:58.7643934Z             {
2026-06-20T11:21:58.7644112Z               "path": "crates/spt-store/src/contextstore.rs",
2026-06-20T11:21:58.7644239Z               "line": 71
2026-06-20T11:21:58.7644359Z             },
2026-06-20T11:21:58.7644474Z             {
2026-06-20T11:21:58.7644645Z               "path": "crates/spt-store/src/contextstore.rs",
2026-06-20T11:21:58.7644779Z               "line": 80
2026-06-20T11:21:58.7644883Z             },
2026-06-20T11:21:58.7645004Z             {
2026-06-20T11:21:58.7645170Z               "path": "crates/spt-store/src/contextstore.rs",
2026-06-20T11:21:58.7645308Z               "line": 88
2026-06-20T11:21:58.7645418Z             },
2026-06-20T11:21:58.7645541Z             {
2026-06-20T11:21:58.7645718Z               "path": "crates/spt-store/src/perch.rs",
2026-06-20T11:21:58.7645842Z               "line": 33
2026-06-20T11:21:58.7645967Z             },
2026-06-20T11:21:58.7646089Z             {
2026-06-20T11:21:58.7646258Z               "path": "crates/spt-store/src/perch.rs",
2026-06-20T11:21:58.7646376Z               "line": 65
2026-06-20T11:21:58.7646508Z             },
2026-06-20T11:21:58.7646628Z             {
2026-06-20T11:21:58.7646776Z               "path": "crates/spt-store/src/perch.rs",
2026-06-20T11:21:58.7646909Z               "line": 74
2026-06-20T11:21:58.7647029Z             },
2026-06-20T11:21:58.7647147Z             {
2026-06-20T11:21:58.7647305Z               "path": "crates/spt-store/src/perch.rs",
2026-06-20T11:21:58.7647433Z               "line": 93
2026-06-20T11:21:58.7647548Z             },
2026-06-20T11:21:58.7647682Z             {
2026-06-20T11:21:58.7647844Z               "path": "crates/spt-store/src/perch.rs",
2026-06-20T11:21:58.7647968Z               "line": 102
2026-06-20T11:21:58.7648087Z             },
2026-06-20T11:21:58.7648203Z             {
2026-06-20T11:21:58.7648358Z               "path": "crates/spt-store/src/perch.rs",
2026-06-20T11:21:58.7648588Z               "line": 111
2026-06-20T11:21:58.7648706Z             },
2026-06-20T11:21:58.7648829Z             {
2026-06-20T11:21:58.7649061Z               "path": "crates/spt-store/src/perch.rs",
2026-06-20T11:21:58.7649185Z               "line": 122
2026-06-20T11:21:58.7649304Z             },
2026-06-20T11:21:58.7649433Z             {
2026-06-20T11:21:58.7649595Z               "path": "crates/spt-store/src/perch.rs",
2026-06-20T11:21:58.7649723Z               "line": 140
2026-06-20T11:21:58.7649848Z             },
2026-06-20T11:21:58.7649957Z             {
2026-06-20T11:21:58.7650125Z               "path": "crates/spt-store/src/perch.rs",
2026-06-20T11:21:58.7650367Z               "line": 149
2026-06-20T11:21:58.7650492Z             },
2026-06-20T11:21:58.7650615Z             {
2026-06-20T11:21:58.7650769Z               "path": "crates/spt-store/src/perch.rs",
2026-06-20T11:21:58.7650896Z               "line": 158
2026-06-20T11:21:58.7651016Z             },
2026-06-20T11:21:58.7651141Z             {
2026-06-20T11:21:58.7651297Z               "path": "crates/spt-store/src/perch.rs",
2026-06-20T11:21:58.7651422Z               "line": 169
2026-06-20T11:21:58.7651540Z             },
2026-06-20T11:21:58.7651658Z             {
2026-06-20T11:21:58.7651815Z               "path": "crates/spt-store/src/perch.rs",
2026-06-20T11:21:58.7651937Z               "line": 177
2026-06-20T11:21:58.7652061Z             },
2026-06-20T11:21:58.7652172Z             {
2026-06-20T11:21:58.7652328Z               "path": "crates/spt-store/src/perch.rs",
2026-06-20T11:21:58.7652457Z               "line": 186
2026-06-20T11:21:58.7652576Z             },
2026-06-20T11:21:58.7652696Z             {
2026-06-20T11:21:58.7652853Z               "path": "crates/spt-store/src/perch.rs",
2026-06-20T11:21:58.7652987Z               "line": 195
2026-06-20T11:21:58.7653106Z             },
2026-06-20T11:21:58.7653225Z             {
2026-06-20T11:21:58.7653383Z               "path": "crates/spt-store/src/perch.rs",
2026-06-20T11:21:58.7653520Z               "line": 204
2026-06-20T11:21:58.7653641Z             },
2026-06-20T11:21:58.7653759Z             {
2026-06-20T11:21:58.7653907Z               "path": "crates/spt-store/src/perch.rs",
2026-06-20T11:21:58.7654037Z               "line": 216
2026-06-20T11:21:58.7654154Z             },
2026-06-20T11:21:58.7654278Z             {
2026-06-20T11:21:58.7654433Z               "path": "crates/spt-store/src/perch.rs",
2026-06-20T11:21:58.7654556Z               "line": 223
2026-06-20T11:21:58.7654662Z             },
2026-06-20T11:21:58.7654785Z             {
2026-06-20T11:21:58.7654944Z               "path": "crates/spt-store/src/perch.rs",
2026-06-20T11:21:58.7655077Z               "line": 232
2026-06-20T11:21:58.7655200Z             },
2026-06-20T11:21:58.7655306Z             {
2026-06-20T11:21:58.7655467Z               "path": "crates/spt-store/src/perch.rs",
2026-06-20T11:21:58.7655597Z               "line": 239
2026-06-20T11:21:58.7655711Z             },
2026-06-20T11:21:58.7655820Z             {
2026-06-20T11:21:58.7655982Z               "path": "crates/spt-store/src/perch.rs",
2026-06-20T11:21:58.7656116Z               "line": 306
2026-06-20T11:21:58.7656236Z             },
2026-06-20T11:21:58.7656359Z             {
2026-06-20T11:21:58.7656513Z               "path": "crates/spt-store/src/perch.rs",
2026-06-20T11:21:58.7656644Z               "line": 318
2026-06-20T11:21:58.7656774Z             },
2026-06-20T11:21:58.7656885Z             {
2026-06-20T11:21:58.7657045Z               "path": "crates/spt-store/src/perch.rs",
2026-06-20T11:21:58.7657174Z               "line": 405
2026-06-20T11:21:58.7657284Z             }
2026-06-20T11:21:58.7657393Z           ]
2026-06-20T11:21:58.7657518Z         },
2026-06-20T11:21:58.7657641Z         "int": {
2026-06-20T11:21:58.7657770Z           "complete": false,
2026-06-20T11:21:58.7657894Z           "evidence": []
2026-06-20T11:21:58.7658008Z         },
2026-06-20T11:21:58.7658133Z         "unit": {
2026-06-20T11:21:58.7658256Z           "complete": true,
2026-06-20T11:21:58.7658490Z           "evidence": [
2026-06-20T11:21:58.7658609Z             {
2026-06-20T11:21:58.7658767Z               "path": "crates/spt-store/src/perch.rs",
2026-06-20T11:21:58.7658894Z               "line": 487
2026-06-20T11:21:58.7659097Z             },
2026-06-20T11:21:58.7659214Z             {
2026-06-20T11:21:58.7659375Z               "path": "crates/spt-store/src/perch.rs",
2026-06-20T11:21:58.7659522Z               "line": 528
2026-06-20T11:21:58.7659649Z             },
2026-06-20T11:21:58.7659764Z             {
2026-06-20T11:21:58.7659926Z               "path": "crates/spt-store/src/perch.rs",
2026-06-20T11:21:58.7660051Z               "line": 541
2026-06-20T11:21:58.7660273Z             },
2026-06-20T11:21:58.7660399Z             {
2026-06-20T11:21:58.7660555Z               "path": "crates/spt-store/src/perch.rs",
2026-06-20T11:21:58.7660686Z               "line": 627
2026-06-20T11:21:58.7660799Z             }
2026-06-20T11:21:58.7660927Z           ]
2026-06-20T11:21:58.7661042Z         }
2026-06-20T11:21:58.7661166Z       }
2026-06-20T11:21:58.7661281Z     },
2026-06-20T11:21:58.7661400Z     {
2026-06-20T11:21:58.7661552Z       "id": "REQ-HAZARD-SOFT-CLEANUP",
2026-06-20T11:21:58.7661809Z       "title": "Soft-cleanup preserves state, removes only the ready marker (6.2)",
2026-06-20T11:21:58.7661939Z       "requiredStages": [
2026-06-20T11:21:58.7662053Z         "impl",
2026-06-20T11:21:58.7662171Z         "unit"
2026-06-20T11:21:58.7662286Z       ],
2026-06-20T11:21:58.7662417Z       "stages": {
2026-06-20T11:21:58.7662540Z         "doc": {
2026-06-20T11:21:58.7662675Z           "complete": false,
2026-06-20T11:21:58.7662802Z           "evidence": []
2026-06-20T11:21:58.7662923Z         },
2026-06-20T11:21:58.7663052Z         "impl": {
2026-06-20T11:21:58.7663184Z           "complete": true,
2026-06-20T11:21:58.7663318Z           "evidence": [
2026-06-20T11:21:58.7663437Z             {
2026-06-20T11:21:58.7663600Z               "path": "crates/spt-msg/src/ready.rs",
2026-06-20T11:21:58.7663738Z               "line": 175
2026-06-20T11:21:58.7663852Z             },
2026-06-20T11:21:58.7663976Z             {
2026-06-20T11:21:58.7664148Z               "path": "crates/spt/src/api/reporting.rs",
2026-06-20T11:21:58.7664268Z               "line": 171
2026-06-20T11:21:58.7664400Z             }
2026-06-20T11:21:58.7664516Z           ]
2026-06-20T11:21:58.7664639Z         },
2026-06-20T11:21:58.7664757Z         "int": {
2026-06-20T11:21:58.7664895Z           "complete": false,
2026-06-20T11:21:58.7665016Z           "evidence": []
2026-06-20T11:21:58.7665131Z         },
2026-06-20T11:21:58.7665256Z         "unit": {
2026-06-20T11:21:58.7665383Z           "complete": true,
2026-06-20T11:21:58.7665509Z           "evidence": [
2026-06-20T11:21:58.7665619Z             {
2026-06-20T11:21:58.7665770Z               "path": "crates/spt-msg/src/ready.rs",
2026-06-20T11:21:58.7665899Z               "line": 297
2026-06-20T11:21:58.7666013Z             },
2026-06-20T11:21:58.7666138Z             {
2026-06-20T11:21:58.7666313Z               "path": "crates/spt/src/api/reporting.rs",
2026-06-20T11:21:58.7666443Z               "line": 836
2026-06-20T11:21:58.7666552Z             },
2026-06-20T11:21:58.7666661Z             {
2026-06-20T11:21:58.7666820Z               "path": "crates/spt/src/api/reporting.rs",
2026-06-20T11:21:58.7666939Z               "line": 849
2026-06-20T11:21:58.7667059Z             }
2026-06-20T11:21:58.7667168Z           ]
2026-06-20T11:21:58.7667291Z         }
2026-06-20T11:21:58.7667402Z       }
2026-06-20T11:21:58.7667525Z     },
2026-06-20T11:21:58.7667638Z     {
2026-06-20T11:21:58.7667782Z       "id": "REQ-HAZARD-STALE-INDEX-LOCK",
2026-06-20T11:21:58.7667991Z       "title": "Sweep stale lockfiles on daemon boot (1.3)",
2026-06-20T11:21:58.7668125Z       "requiredStages": [
2026-06-20T11:21:58.7668253Z         "impl",
2026-06-20T11:21:58.7668369Z         "unit"
2026-06-20T11:21:58.7668483Z       ],
2026-06-20T11:21:58.7668606Z       "stages": {
2026-06-20T11:21:58.7668731Z         "doc": {
2026-06-20T11:21:58.7669074Z           "complete": false,
2026-06-20T11:21:58.7669202Z           "evidence": []
2026-06-20T11:21:58.7669323Z         },
2026-06-20T11:21:58.7669445Z         "impl": {
2026-06-20T11:21:58.7669574Z           "complete": true,
2026-06-20T11:21:58.7669695Z           "evidence": [
2026-06-20T11:21:58.7669821Z             {
2026-06-20T11:21:58.7669988Z               "path": "crates/spt-daemon/src/daemon.rs",
2026-06-20T11:21:58.7670119Z               "line": 116
2026-06-20T11:21:58.7670243Z             },
2026-06-20T11:21:58.7670349Z             {
2026-06-20T11:21:58.7670524Z               "path": "crates/spt-store/src/branchstore.rs",
2026-06-20T11:21:58.7670763Z               "line": 507
2026-06-20T11:21:58.7670877Z             }
2026-06-20T11:21:58.7671002Z           ]
2026-06-20T11:21:58.7671115Z         },
2026-06-20T11:21:58.7671241Z         "int": {
2026-06-20T11:21:58.7671369Z           "complete": false,
2026-06-20T11:21:58.7671502Z           "evidence": []
2026-06-20T11:21:58.7671626Z         },
2026-06-20T11:21:58.7671755Z         "unit": {
2026-06-20T11:21:58.7671885Z           "complete": true,
2026-06-20T11:21:58.7672012Z           "evidence": [
2026-06-20T11:21:58.7672131Z             {
2026-06-20T11:21:58.7672303Z               "path": "crates/spt-store/src/branchstore.rs",
2026-06-20T11:21:58.7672441Z               "line": 541
2026-06-20T11:21:58.7672566Z             }
2026-06-20T11:21:58.7672675Z           ]
2026-06-20T11:21:58.7672802Z         }
2026-06-20T11:21:58.7672912Z       }
2026-06-20T11:21:58.7673034Z     },
2026-06-20T11:21:58.7673139Z     {
2026-06-20T11:21:58.7673315Z       "id": "REQ-HAZARD-STALE-SIGNOFF-SENTINEL",
2026-06-20T11:21:58.7673535Z       "title": "Stale signoff sentinel does not kill a fresh start (3.2)",
2026-06-20T11:21:58.7673663Z       "requiredStages": [
2026-06-20T11:21:58.7673783Z         "impl",
2026-06-20T11:21:58.7673893Z         "unit"
2026-06-20T11:21:58.7674007Z       ],
2026-06-20T11:21:58.7674132Z       "stages": {
2026-06-20T11:21:58.7674250Z         "doc": {
2026-06-20T11:21:58.7674379Z           "complete": false,
2026-06-20T11:21:58.7674513Z           "evidence": []
2026-06-20T11:21:58.7674627Z         },
2026-06-20T11:21:58.7674747Z         "impl": {
2026-06-20T11:21:58.7674875Z           "complete": true,
2026-06-20T11:21:58.7675003Z           "evidence": [
2026-06-20T11:21:58.7675128Z             {
2026-06-20T11:21:58.7675298Z               "path": "crates/spt-daemon/src/lifecycle.rs",
2026-06-20T11:21:58.7675431Z               "line": 552
2026-06-20T11:21:58.7675553Z             },
2026-06-20T11:21:58.7675662Z             {
2026-06-20T11:21:58.7675836Z               "path": "crates/spt-live/src/signoff.rs",
2026-06-20T11:21:58.7675967Z               "line": 28
2026-06-20T11:21:58.7676088Z             }
2026-06-20T11:21:58.7676207Z           ]
2026-06-20T11:21:58.7676311Z         },
2026-06-20T11:21:58.7676431Z         "int": {
2026-06-20T11:21:58.7676563Z           "complete": false,
2026-06-20T11:21:58.7676693Z           "evidence": []
2026-06-20T11:21:58.7676816Z         },
2026-06-20T11:21:58.7676941Z         "unit": {
2026-06-20T11:21:58.7677070Z           "complete": true,
2026-06-20T11:21:58.7677203Z           "evidence": [
2026-06-20T11:21:58.7677318Z             {
2026-06-20T11:21:58.7677489Z               "path": "crates/spt-live/src/signoff.rs",
2026-06-20T11:21:58.7677624Z               "line": 229
2026-06-20T11:21:58.7677742Z             }
2026-06-20T11:21:58.7677861Z           ]
2026-06-20T11:21:58.7677976Z         }
2026-06-20T11:21:58.7678090Z       }
2026-06-20T11:21:58.7678212Z     },
2026-06-20T11:21:58.7678328Z     {
2026-06-20T11:21:58.7678479Z       "id": "REQ-HAZARD-STDIN-SESSION-ID",
2026-06-20T11:21:58.7678662Z       "title": "Stdin session_id precedence over env (2.2)",
2026-06-20T11:21:58.7678803Z       "requiredStages": [],
2026-06-20T11:21:58.7678934Z       "stages": {
2026-06-20T11:21:58.7679142Z         "doc": {
2026-06-20T11:21:58.7679282Z           "complete": false,
2026-06-20T11:21:58.7679577Z           "evidence": []
2026-06-20T11:21:58.7679700Z         },
2026-06-20T11:21:58.7679820Z         "impl": {
2026-06-20T11:21:58.7679963Z           "complete": false,
2026-06-20T11:21:58.7680077Z           "evidence": []
2026-06-20T11:21:58.7680188Z         },
2026-06-20T11:21:58.7680311Z         "int": {
2026-06-20T11:21:58.7680438Z           "complete": false,
2026-06-20T11:21:58.7680577Z           "evidence": []
2026-06-20T11:21:58.7680689Z         },
2026-06-20T11:21:58.7680818Z         "unit": {
2026-06-20T11:21:58.7680938Z           "complete": false,
2026-06-20T11:21:58.7681070Z           "evidence": []
2026-06-20T11:21:58.7681190Z         }
2026-06-20T11:21:58.7681404Z       }
2026-06-20T11:21:58.7681524Z     },
2026-06-20T11:21:58.7681638Z     {
2026-06-20T11:21:58.7681796Z       "id": "REQ-HAZARD-SUBPROCESS-TIMEOUT",
2026-06-20T11:21:58.7681990Z       "title": "Every harness/git subprocess has a timeout (5.3)",
2026-06-20T11:21:58.7682125Z       "requiredStages": [
2026-06-20T11:21:58.7682258Z         "impl",
2026-06-20T11:21:58.7682372Z         "unit"
2026-06-20T11:21:58.7682497Z       ],
2026-06-20T11:21:58.7682615Z       "stages": {
2026-06-20T11:21:58.7682745Z         "doc": {
2026-06-20T11:21:58.7682886Z           "complete": false,
2026-06-20T11:21:58.7683011Z           "evidence": []
2026-06-20T11:21:58.7683131Z         },
2026-06-20T11:21:58.7683249Z         "impl": {
2026-06-20T11:21:58.7683386Z           "complete": true,
2026-06-20T11:21:58.7683500Z           "evidence": [
2026-06-20T11:21:58.7683627Z             {
2026-06-20T11:21:58.7683786Z               "path": "crates/spt-live/src/turn.rs",
2026-06-20T11:21:58.7683913Z               "line": 19
2026-06-20T11:21:58.7684033Z             },
2026-06-20T11:21:58.7684153Z             {
2026-06-20T11:21:58.7684329Z               "path": "crates/spt-runtime/src/runtime.rs",
2026-06-20T11:21:58.7684453Z               "line": 463
2026-06-20T11:21:58.7684581Z             },
2026-06-20T11:21:58.7684701Z             {
2026-06-20T11:21:58.7684872Z               "path": "crates/spt-runtime/src/runtime.rs",
2026-06-20T11:21:58.7685002Z               "line": 499
2026-06-20T11:21:58.7685115Z             },
2026-06-20T11:21:58.7685234Z             {
2026-06-20T11:21:58.7685397Z               "path": "crates/spt-runtime/src/runtime.rs",
2026-06-20T11:21:58.7685530Z               "line": 547
2026-06-20T11:21:58.7685656Z             },
2026-06-20T11:21:58.7685768Z             {
2026-06-20T11:21:58.7685939Z               "path": "crates/spt-store/src/gitrun.rs",
2026-06-20T11:21:58.7686067Z               "line": 15
2026-06-20T11:21:58.7686189Z             },
2026-06-20T11:21:58.7686309Z             {
2026-06-20T11:21:58.7686480Z               "path": "crates/spt-store/src/gitrun.rs",
2026-06-20T11:21:58.7686600Z               "line": 48
2026-06-20T11:21:58.7686705Z             },
2026-06-20T11:21:58.7686828Z             {
2026-06-20T11:21:58.7686981Z               "path": "crates/spt-store/src/gitrun.rs",
2026-06-20T11:21:58.7687114Z               "line": 119
2026-06-20T11:21:58.7687235Z             },
2026-06-20T11:21:58.7687358Z             {
2026-06-20T11:21:58.7687501Z               "path": "crates/spt/src/cli.rs",
2026-06-20T11:21:58.7687625Z               "line": 3948
2026-06-20T11:21:58.7687749Z             }
2026-06-20T11:21:58.7687859Z           ]
2026-06-20T11:21:58.7687982Z         },
2026-06-20T11:21:58.7688101Z         "int": {
2026-06-20T11:21:58.7688236Z           "complete": false,
2026-06-20T11:21:58.7688368Z           "evidence": []
2026-06-20T11:21:58.7688474Z         },
2026-06-20T11:21:58.7688603Z         "unit": {
2026-06-20T11:21:58.7688730Z           "complete": true,
2026-06-20T11:21:58.7688863Z           "evidence": [
2026-06-20T11:21:58.7689058Z             {
2026-06-20T11:21:58.7689227Z               "path": "crates/spt-runtime/src/runtime.rs",
2026-06-20T11:21:58.7689354Z               "line": 765
2026-06-20T11:21:58.7689465Z             },
2026-06-20T11:21:58.7689588Z             {
2026-06-20T11:21:58.7689750Z               "path": "crates/spt-store/src/gitrun.rs",
2026-06-20T11:21:58.7689989Z               "line": 165
2026-06-20T11:21:58.7690104Z             },
2026-06-20T11:21:58.7690227Z             {
2026-06-20T11:21:58.7690394Z               "path": "crates/spt-store/src/gitrun.rs",
2026-06-20T11:21:58.7690519Z               "line": 175
2026-06-20T11:21:58.7690642Z             }
2026-06-20T11:21:58.7690753Z           ]
2026-06-20T11:21:58.7690876Z         }
2026-06-20T11:21:58.7690985Z       }
2026-06-20T11:21:58.7691103Z     },
2026-06-20T11:21:58.7691225Z     {
2026-06-20T11:21:58.7691373Z       "id": "REQ-HAZARD-SUDO-SECURE-PATH",
2026-06-20T11:21:58.7692399Z       "title": "Elevation guidance on Unix names the binary's ABSOLUTE path under sudo (a user-local install ~/.local/bin · ~/.cargo/bin is not on sudo's secure_path, so bare `sudo spt` dies 'command not found'); gated commands auto-elevate on an interactive TTY, else print the runnable hint (5.10)",
2026-06-20T11:21:58.7692641Z       "requiredStages": [
2026-06-20T11:21:58.7692775Z         "impl",
2026-06-20T11:21:58.7692903Z         "unit"
2026-06-20T11:21:58.7693019Z       ],
2026-06-20T11:21:58.7693137Z       "stages": {
2026-06-20T11:21:58.7693247Z         "doc": {
2026-06-20T11:21:58.7693391Z           "complete": false,
2026-06-20T11:21:58.7693509Z           "evidence": []
2026-06-20T11:21:58.7693634Z         },
2026-06-20T11:21:58.7693761Z         "impl": {
2026-06-20T11:21:58.7693889Z           "complete": true,
2026-06-20T11:21:58.7694018Z           "evidence": [
2026-06-20T11:21:58.7694126Z             {
2026-06-20T11:21:58.7694293Z               "path": "crates/spt/src/elevation.rs",
2026-06-20T11:21:58.7694421Z               "line": 192
2026-06-20T11:21:58.7694540Z             },
2026-06-20T11:21:58.7694660Z             {
2026-06-20T11:21:58.7694812Z               "path": "crates/spt/src/elevation.rs",
2026-06-20T11:21:58.7694947Z               "line": 279
2026-06-20T11:21:58.7695051Z             }
2026-06-20T11:21:58.7695174Z           ]
2026-06-20T11:21:58.7695290Z         },
2026-06-20T11:21:58.7695413Z         "int": {
2026-06-20T11:21:58.7695547Z           "complete": false,
2026-06-20T11:21:58.7695670Z           "evidence": []
2026-06-20T11:21:58.7695790Z         },
2026-06-20T11:21:58.7695910Z         "unit": {
2026-06-20T11:21:58.7696042Z           "complete": true,
2026-06-20T11:21:58.7696167Z           "evidence": [
2026-06-20T11:21:58.7696291Z             {
2026-06-20T11:21:58.7696451Z               "path": "crates/spt/src/elevation.rs",
2026-06-20T11:21:58.7696580Z               "line": 470
2026-06-20T11:21:58.7696702Z             },
2026-06-20T11:21:58.7696811Z             {
2026-06-20T11:21:58.7696970Z               "path": "crates/spt/src/elevation.rs",
2026-06-20T11:21:58.7697102Z               "line": 526
2026-06-20T11:21:58.7697222Z             }
2026-06-20T11:21:58.7697341Z           ]
2026-06-20T11:21:58.7697455Z         }
2026-06-20T11:21:58.7697565Z       }
2026-06-20T11:21:58.7697674Z     },
2026-06-20T11:21:58.7697785Z     {
2026-06-20T11:21:58.7697941Z       "id": "REQ-HAZARD-TEMPLATE-ARGV-FILL",
2026-06-20T11:21:58.7702325Z       "title": "Command-template substitution fills argv ELEMENTS, not a re-tokenized string: spt-core currently `fill_template`s {key} values INTO the command STRING and THEN `tokenize`s the filled string (runtime.rs:94/122), so a multi-word {key} value whitespace-SPLITS into multiple argv tokens unless the adapter hand-quotes the placeholder, and a value containing a `\"` (or `;`) injects/breaks tokenization (shell-injection-adjacent). A filled value MUST become exactly ONE argv element regardless of spaces/quotes in the value. Fix: tokenize the TEMPLATE into argv FIRST, then `fill_template` EACH token, so a `{key}` slot resolves to a single element and the value never participates in tokenization (no whitespace-split, no quote/semicolon injection); preserve the missing-key / empty-command errors and `{{`/`}}` non-interpretation. perri's F-009 (v0.8.1 dogfood, argv-capture-confirmed): a multi-word `{psyche_prompt}` = \"PSYCHE REVIVAL time: epoch-ms:… incoming event: (none)\" arrived as argv[6..12] (7 stray tokens), the harness runner strict-parsed `--prompt` against the 2nd word, exited 2 within ~1s → phantom hosted perch. Applies to EVERY [session.<role>] template (psyche_init, extractor, notif, …); digest survives today only because its fills ({session_id}/{source}) are single-token.",
2026-06-20T11:21:58.7702606Z       "requiredStages": [
2026-06-20T11:21:58.7702758Z         "impl",
2026-06-20T11:21:58.7702911Z         "unit",
2026-06-20T11:21:58.7703030Z         "int"
2026-06-20T11:21:58.7703153Z       ],
2026-06-20T11:21:58.7703274Z       "stages": {
2026-06-20T11:21:58.7703398Z         "doc": {
2026-06-20T11:21:58.7703659Z           "complete": false,
2026-06-20T11:21:58.7703792Z           "evidence": []
2026-06-20T11:21:58.7703913Z         },
2026-06-20T11:21:58.7704035Z         "impl": {
2026-06-20T11:21:58.7704156Z           "complete": true,
2026-06-20T11:21:58.7704289Z           "evidence": [
2026-06-20T11:21:58.7704407Z             {
2026-06-20T11:21:58.7704583Z               "path": "crates/spt-daemon/src/harnesshost.rs",
2026-06-20T11:21:58.7704714Z               "line": 116
2026-06-20T11:21:58.7704834Z             },
2026-06-20T11:21:58.7704949Z             {
2026-06-20T11:21:58.7705110Z               "path": "crates/spt-daemon/src/shellhost.rs",
2026-06-20T11:21:58.7705239Z               "line": 132
2026-06-20T11:21:58.7705353Z             },
2026-06-20T11:21:58.7705468Z             {
2026-06-20T11:21:58.7705635Z               "path": "crates/spt-daemon/src/shellwake.rs",
2026-06-20T11:21:58.7705764Z               "line": 434
2026-06-20T11:21:58.7705887Z             },
2026-06-20T11:21:58.7706006Z             {
2026-06-20T11:21:58.7706174Z               "path": "crates/spt-runtime/src/runtime.rs",
2026-06-20T11:21:58.7706307Z               "line": 139
2026-06-20T11:21:58.7706422Z             },
2026-06-20T11:21:58.7706536Z             {
2026-06-20T11:21:58.7706708Z               "path": "crates/spt-runtime/src/runtime.rs",
2026-06-20T11:21:58.7706842Z               "line": 326
2026-06-20T11:21:58.7706960Z             },
2026-06-20T11:21:58.7707083Z             {
2026-06-20T11:21:58.7707248Z               "path": "crates/spt-runtime/src/runtime.rs",
2026-06-20T11:21:58.7707362Z               "line": 555
2026-06-20T11:21:58.7707477Z             }
2026-06-20T11:21:58.7707591Z           ]
2026-06-20T11:21:58.7707715Z         },
2026-06-20T11:21:58.7707835Z         "int": {
2026-06-20T11:21:58.7707967Z           "complete": true,
2026-06-20T11:21:58.7708092Z           "evidence": [
2026-06-20T11:21:58.7708202Z             {
2026-06-20T11:21:58.7708402Z               "path": "crates/spt/tests/livehost_nonresident_e2e.rs",
2026-06-20T11:21:58.7708526Z               "line": 32
2026-06-20T11:21:58.7708650Z             }
2026-06-20T11:21:58.7712129Z           ]
2026-06-20T11:21:58.7712285Z         },
2026-06-20T11:21:58.7712407Z         "unit": {
2026-06-20T11:21:58.7712536Z           "complete": true,
2026-06-20T11:21:58.7712680Z           "evidence": [
2026-06-20T11:21:58.7712789Z             {
2026-06-20T11:21:58.7712975Z               "path": "crates/spt-runtime/src/runtime.rs",
2026-06-20T11:21:58.7713113Z               "line": 625
2026-06-20T11:21:58.7713233Z             },
2026-06-20T11:21:58.7713365Z             {
2026-06-20T11:21:58.7713543Z               "path": "crates/spt-runtime/src/runtime.rs",
2026-06-20T11:21:58.7713680Z               "line": 646
2026-06-20T11:21:58.7713801Z             },
2026-06-20T11:21:58.7713923Z             {
2026-06-20T11:21:58.7714096Z               "path": "crates/spt-runtime/src/runtime.rs",
2026-06-20T11:21:58.7714229Z               "line": 662
2026-06-20T11:21:58.7714352Z             },
2026-06-20T11:21:58.7714473Z             {
2026-06-20T11:21:58.7714644Z               "path": "crates/spt-runtime/src/runtime.rs",
2026-06-20T11:21:58.7714769Z               "line": 680
2026-06-20T11:21:58.7714887Z             },
2026-06-20T11:21:58.7715005Z             {
2026-06-20T11:21:58.7715176Z               "path": "crates/spt-runtime/src/runtime.rs",
2026-06-20T11:21:58.7715466Z               "line": 704
2026-06-20T11:21:58.7715584Z             }
2026-06-20T11:21:58.7715704Z           ]
2026-06-20T11:21:58.7715818Z         }
2026-06-20T11:21:58.7715937Z       }
2026-06-20T11:21:58.7716057Z     },
2026-06-20T11:21:58.7716167Z     {
2026-06-20T11:21:58.7716328Z       "id": "REQ-HAZARD-UNC-PATH-STRIP",
2026-06-20T11:21:58.7716543Z       "title": "Strip Windows UNC prefix on serialized paths (5.4)",
2026-06-20T11:21:58.7716692Z       "requiredStages": [
2026-06-20T11:21:58.7716805Z         "impl",
2026-06-20T11:21:58.7716920Z         "unit"
2026-06-20T11:21:58.7717040Z       ],
2026-06-20T11:21:58.7717341Z       "stages": {
2026-06-20T11:21:58.7717467Z         "doc": {
2026-06-20T11:21:58.7717600Z           "complete": false,
2026-06-20T11:21:58.7717724Z           "evidence": []
2026-06-20T11:21:58.7717837Z         },
2026-06-20T11:21:58.7717965Z         "impl": {
2026-06-20T11:21:58.7718090Z           "complete": true,
2026-06-20T11:21:58.7718217Z           "evidence": [
2026-06-20T11:21:58.7718342Z             {
2026-06-20T11:21:58.7718509Z               "path": "crates/spt-store/src/atomic.rs",
2026-06-20T11:21:58.7718629Z               "line": 35
2026-06-20T11:21:58.7718743Z             }
2026-06-20T11:21:58.7718861Z           ]
2026-06-20T11:21:58.7719052Z         },
2026-06-20T11:21:58.7719167Z         "int": {
2026-06-20T11:21:58.7719296Z           "complete": false,
2026-06-20T11:21:58.7719434Z           "evidence": []
2026-06-20T11:21:58.7719554Z         },
2026-06-20T11:21:58.7719677Z         "unit": {
2026-06-20T11:21:58.7719806Z           "complete": true,
2026-06-20T11:21:58.7719926Z           "evidence": [
2026-06-20T11:21:58.7720049Z             {
2026-06-20T11:21:58.7720213Z               "path": "crates/spt-store/src/atomic.rs",
2026-06-20T11:21:58.7720344Z               "line": 220
2026-06-20T11:21:58.7720462Z             }
2026-06-20T11:21:58.7720568Z           ]
2026-06-20T11:21:58.7720692Z         }
2026-06-20T11:21:58.7720806Z       }
2026-06-20T11:21:58.7720917Z     },
2026-06-20T11:21:58.7721035Z     {
2026-06-20T11:21:58.7721184Z       "id": "REQ-HAZARD-UNHOST-PSYCHE-REAP",
2026-06-20T11:21:58.7724723Z       "title": "On un-host, the detached `{id}-psyche` HARNESS PROCESS is reaped — not just its in-brain pulse-driver thread. Today stop_host (livehost.rs:203) trips the HostedLife stop flag + JOINS the driver thread, but the Psyche is a detached harness process (spawn_psyche → ManifestRuntime detached spawn, runtime.rs:341-356; its pid is untracked in HostedLife though stamped on the `{id}-psyche` perch, where residency-confirm already reads it). So endpoint-stop / mid-life agent-death / a B2/B5 offline-then-unhost leaves the psyche process ORPHANED, alive until the next daemon-stop (where Breap's job/group reaps the whole brain subtree). The Psyche STAYS a harness process by design (CONTEXT.md 97/203/251 — headless harness session, its own perch) — the fix does NOT move it in-brain; it SCOPED-kills the `{id}-psyche` pid on un-host (never machine-wide — shared box). Track the pid in HostedLife at host_one (cleanest) or read the `{id}-psyche` perch pid at stop_host. Composes with H3 (endpoint stop → offline → reconcile un-host → reap) and B2/B5 (the offline arms that trigger un-host). (v0.12.0)",
2026-06-20T11:21:58.7724889Z       "requiredStages": [
2026-06-20T11:21:58.7725010Z         "impl",
2026-06-20T11:21:58.7725132Z         "unit",
2026-06-20T11:21:58.7725257Z         "int"
2026-06-20T11:21:58.7725367Z       ],
2026-06-20T11:21:58.7725494Z       "stages": {
2026-06-20T11:21:58.7725613Z         "doc": {
2026-06-20T11:21:58.7725755Z           "complete": false,
2026-06-20T11:21:58.7725882Z           "evidence": []
2026-06-20T11:21:58.7726002Z         },
2026-06-20T11:21:58.7726135Z         "impl": {
2026-06-20T11:21:58.7726259Z           "complete": true,
2026-06-20T11:21:58.7726393Z           "evidence": [
2026-06-20T11:21:58.7726511Z             {
2026-06-20T11:21:58.7726693Z               "path": "crates/spt-daemon/src/lifecycle.rs",
2026-06-20T11:21:58.7726932Z               "line": 202
2026-06-20T11:21:58.7727050Z             },
2026-06-20T11:21:58.7727184Z             {
2026-06-20T11:21:58.7727346Z               "path": "crates/spt-live/src/psyche.rs",
2026-06-20T11:21:58.7727485Z               "line": 107
2026-06-20T11:21:58.7727600Z             },
2026-06-20T11:21:58.7727727Z             {
2026-06-20T11:21:58.7727881Z               "path": "crates/spt-live/src/psyche.rs",
2026-06-20T11:21:58.7728009Z               "line": 138
2026-06-20T11:21:58.7728122Z             },
2026-06-20T11:21:58.7728227Z             {
2026-06-20T11:21:58.7728420Z               "path": "crates/spt-runtime/src/runtime.rs",
2026-06-20T11:21:58.7728641Z               "line": 209
2026-06-20T11:21:58.7728768Z             },
2026-06-20T11:21:58.7728889Z             {
2026-06-20T11:21:58.7729170Z               "path": "crates/spt-runtime/src/runtime.rs",
2026-06-20T11:21:58.7729299Z               "line": 246
2026-06-20T11:21:58.7729407Z             },
2026-06-20T11:21:58.7729528Z             {
2026-06-20T11:21:58.7729703Z               "path": "crates/spt-runtime/src/runtime.rs",
2026-06-20T11:21:58.7729833Z               "line": 379
2026-06-20T11:21:58.7729952Z             }
2026-06-20T11:21:58.7730061Z           ]
2026-06-20T11:21:58.7730176Z         },
2026-06-20T11:21:58.7730294Z         "int": {
2026-06-20T11:21:58.7730429Z           "complete": true,
2026-06-20T11:21:58.7730551Z           "evidence": [
2026-06-20T11:21:58.7730676Z             {
2026-06-20T11:21:58.7730871Z               "path": "crates/spt/tests/unhost_psyche_reap_e2e.rs",
2026-06-20T11:21:58.7730994Z               "line": 17
2026-06-20T11:21:58.7731124Z             }
2026-06-20T11:21:58.7731228Z           ]
2026-06-20T11:21:58.7731356Z         },
2026-06-20T11:21:58.7731472Z         "unit": {
2026-06-20T11:21:58.7731619Z           "complete": true,
2026-06-20T11:21:58.7731744Z           "evidence": [
2026-06-20T11:21:58.7731863Z             {
2026-06-20T11:21:58.7732039Z               "path": "crates/spt-daemon/src/livehost.rs",
2026-06-20T11:21:58.7732177Z               "line": 982
2026-06-20T11:21:58.7732295Z             }
2026-06-20T11:21:58.7732411Z           ]
2026-06-20T11:21:58.7732530Z         }
2026-06-20T11:21:58.7732635Z       }
2026-06-20T11:21:58.7732759Z     },
2026-06-20T11:21:58.7732878Z     {
2026-06-20T11:21:58.7733032Z       "id": "REQ-HAZARD-UPDATE-ROLLBACK",
2026-06-20T11:21:58.7733368Z       "title": "Self-update rejects version rollback; metadata expiry + adapter content signing (codex #5)",
2026-06-20T11:21:58.7733499Z       "requiredStages": [
2026-06-20T11:21:58.7733628Z         "impl",
2026-06-20T11:21:58.7733753Z         "unit"
2026-06-20T11:21:58.7733866Z       ],
2026-06-20T11:21:58.7733991Z       "stages": {
2026-06-20T11:21:58.7734109Z         "doc": {
2026-06-20T11:21:58.7734238Z           "complete": false,
2026-06-20T11:21:58.7734367Z           "evidence": []
2026-06-20T11:21:58.7734505Z         },
2026-06-20T11:21:58.7734672Z         "impl": {
2026-06-20T11:21:58.7734863Z           "complete": true,
2026-06-20T11:21:58.7735063Z           "evidence": [
2026-06-20T11:21:58.7735264Z             {
2026-06-20T11:21:58.7735517Z               "path": "crates/spt-daemon/src/propagate.rs",
2026-06-20T11:21:58.7735645Z               "line": 405
2026-06-20T11:21:58.7735774Z             },
2026-06-20T11:21:58.7735904Z             {
2026-06-20T11:21:58.7736120Z               "path": "crates/spt-daemon/src/release.rs",
2026-06-20T11:21:58.7736263Z               "line": 409
2026-06-20T11:21:58.7736371Z             },
2026-06-20T11:21:58.7736500Z             {
2026-06-20T11:21:58.7736681Z               "path": "crates/spt-daemon/src/update.rs",
2026-06-20T11:21:58.7736814Z               "line": 156
2026-06-20T11:21:58.7736939Z             }
2026-06-20T11:21:58.7737052Z           ]
2026-06-20T11:21:58.7737187Z         },
2026-06-20T11:21:58.7737334Z         "int": {
2026-06-20T11:21:58.7737473Z           "complete": false,
2026-06-20T11:21:58.7737730Z           "evidence": []
2026-06-20T11:21:58.7737841Z         },
2026-06-20T11:21:58.7737958Z         "unit": {
2026-06-20T11:21:58.7738088Z           "complete": true,
2026-06-20T11:21:58.7738217Z           "evidence": [
2026-06-20T11:21:58.7738335Z             {
2026-06-20T11:21:58.7738513Z               "path": "crates/spt-daemon/src/release.rs",
2026-06-20T11:21:58.7738644Z               "line": 865
2026-06-20T11:21:58.7738759Z             },
2026-06-20T11:21:58.7738872Z             {
2026-06-20T11:21:58.7739124Z               "path": "crates/spt-daemon/src/release.rs",
2026-06-20T11:21:58.7739257Z               "line": 879
2026-06-20T11:21:58.7739381Z             },
2026-06-20T11:21:58.7739643Z             {
2026-06-20T11:21:58.7739810Z               "path": "crates/spt-daemon/src/release.rs",
2026-06-20T11:21:58.7739938Z               "line": 898
2026-06-20T11:21:58.7740069Z             },
2026-06-20T11:21:58.7740182Z             {
2026-06-20T11:21:58.7740355Z               "path": "crates/spt-daemon/src/release.rs",
2026-06-20T11:21:58.7740487Z               "line": 915
2026-06-20T11:21:58.7740616Z             },
2026-06-20T11:21:58.7740737Z             {
2026-06-20T11:21:58.7740926Z               "path": "crates/spt-daemon/tests/propagate.rs",
2026-06-20T11:21:58.7741056Z               "line": 441
2026-06-20T11:21:58.7741169Z             }
2026-06-20T11:21:58.7741285Z           ]
2026-06-20T11:21:58.7741394Z         }
2026-06-20T11:21:58.7741512Z       }
2026-06-20T11:21:58.7741635Z     },
2026-06-20T11:21:58.7741746Z     {
2026-06-20T11:21:58.7741912Z       "id": "REQ-HAZARD-VIEWER-CLOSE-DETACH",
2026-06-20T11:21:58.7752724Z       "title": "A VIEW is independent from the endpoint: closing the tab/window where `spt endpoint run` was invoked must detach ONLY the `spt rc` attach pump — the daemon-hosted harness keeps running and stays re-attachable via `spt rc <id>`. ROOT (Windows, v0.12.0 real-harness defect): the daemon never breaks away from the launching terminal's Job Object. Windows Terminal / VS Code place the launched shell AND every descendant into a Job Object with JOB_OBJECT_LIMIT_KILL_ON_JOB_CLOSE; closing the tab drops the terminal's last job handle → the OS terminates every process still in that job. A child escapes only with CREATE_BREAKAWAY_FROM_JOB — used NOWHERE in the tree. Both daemon spawn paths (daemon.rs:707 detached_no_inherit = DETACHED_PROCESS|CREATE_NEW_PROCESS_GROUP|CREATE_NO_WINDOW; deelevate.rs:519 elevated = CREATE_NEW_CONSOLE|...) drop the CONSOLE but NOT job membership, so the daemon's freshly broker-spawned ConPTY harness subtree is reaped on tab-close. The ConPTY/pseudoconsole isolation itself is CORRECT (portable-pty builds the pseudoconsole in the daemon; no console signal / handle leak) — the leaking lifetime binding is the Job Object, not the console. FIX: add CREATE_BREAKAWAY_FROM_JOB to both daemon spawn paths AND pin each broker-spawned harness into a DAEMON-OWNED Job Object (mirror reap.rs/Breap) as backstop (survives even where a terminal sets SILENT_BREAKAWAY_OK=false). Unix: the daemon's own session detachment (new session, no controlling terminal) already keeps a closing terminal's SIGHUP off its children — verify, add a guard test, no code expected. FIX UPDATE (v0.12.1 L1.5, doyle re-scope operator-approved 2026-06-18): job-neutral daemon launch is now PRIMARY, breakaway DEMOTED to a fallback rung. ROOT reframed — the daemon INHERITS the terminal's Job because spawn_detached runs FROM the terminal-child CLI (DETACHED_PROCESS detaches the console, not the job); breakaway tried to claw back out but a job CAN deny it (the L1 finding). FIX: launch the cold-started daemon via a job-NEUTRAL creator so it is WmiPrvSE/Task-Scheduler-owned, OUTSIDE any terminal job from birth (why Task-Scheduler-autostarted daemons never had this bug). Launcher ladder (first-success-wins, daemon.rs spawn_detached → BOTH cold-start AND `spt daemon start`): (1) WMI Win32_Process.Create via ABSOLUTE powershell -EncodedCommand (KH 5.12 abs path; base64-UTF16LE dodges all quoting; success requires BOTH ReturnValue==0 AND a parsed ProcessId, else fall-through — never a silent launched), forwarding SPT_* env via a `cmd /c set … & start /b` wrapper because a WMI/scheduler child does NOT inherit transient shell env (verified — SPT_HOME would be lost, wrong universe); (2) schtasks one-shot (same env wrapper; best-effort fallback); (3) CREATE_BREAKAWAY_FROM_JOB (the L1 code, reordered below); (4) in-job last resort (logs DETACH_IN_JOB + tab-close caveat). detached_no_inherit (breakaway-then-in-job) is UNCHANGED for its other caller shellhost::launch_shell (a daemon-spawned shell is already job-neutral once the daemon is). The elevated deelevate path keeps its L1 breakaway for now (elevated-case WMI-reparent = FOLLOW-UP). (v0.12.1)",
2026-06-20T11:21:58.7753145Z       "requiredStages": [
2026-06-20T11:21:58.7753273Z         "doc",
2026-06-20T11:21:58.7753392Z         "impl",
2026-06-20T11:21:58.7753518Z         "unit",
2026-06-20T11:21:58.7753636Z         "int"
2026-06-20T11:21:58.7753760Z       ],
2026-06-20T11:21:58.7753884Z       "stages": {
2026-06-20T11:21:58.7754002Z         "doc": {
2026-06-20T11:21:58.7754133Z           "complete": true,
2026-06-20T11:21:58.7754260Z           "evidence": [
2026-06-20T11:21:58.7754373Z             {
2026-06-20T11:21:58.7754530Z               "path": "CONTEXT.md",
2026-06-20T11:21:58.7754662Z               "line": 420
2026-06-20T11:21:58.7754787Z             },
2026-06-20T11:21:58.7754905Z             {
2026-06-20T11:21:58.7755067Z               "path": "docs/KNOWN-HAZARDS.md",
2026-06-20T11:21:58.7755197Z               "line": 402
2026-06-20T11:21:58.7755315Z             }
2026-06-20T11:21:58.7755422Z           ]
2026-06-20T11:21:58.7755549Z         },
2026-06-20T11:21:58.7755668Z         "impl": {
2026-06-20T11:21:58.7755802Z           "complete": true,
2026-06-20T11:21:58.7755930Z           "evidence": [
2026-06-20T11:21:58.7756046Z             {
2026-06-20T11:21:58.7756216Z               "path": "crates/spt-daemon/src/daemon.rs",
2026-06-20T11:21:58.7756351Z               "line": 797
2026-06-20T11:21:58.7756469Z             },
2026-06-20T11:21:58.7756593Z             {
2026-06-20T11:21:58.7756765Z               "path": "crates/spt-daemon/src/daemon.rs",
2026-06-20T11:21:58.7756899Z               "line": 822
2026-06-20T11:21:58.7757019Z             },
2026-06-20T11:21:58.7757136Z             {
2026-06-20T11:21:58.7757302Z               "path": "crates/spt-daemon/src/daemon.rs",
2026-06-20T11:21:58.7757439Z               "line": 839
2026-06-20T11:21:58.7757562Z             },
2026-06-20T11:21:58.7757677Z             {
2026-06-20T11:21:58.7757839Z               "path": "crates/spt-daemon/src/daemon.rs",
2026-06-20T11:21:58.7757974Z               "line": 854
2026-06-20T11:21:58.7758088Z             },
2026-06-20T11:21:58.7758206Z             {
2026-06-20T11:21:58.7758383Z               "path": "crates/spt-daemon/src/daemon.rs",
2026-06-20T11:21:58.7758516Z               "line": 874
2026-06-20T11:21:58.7758627Z             },
2026-06-20T11:21:58.7758750Z             {
2026-06-20T11:21:58.7758918Z               "path": "crates/spt-daemon/src/daemon.rs",
2026-06-20T11:21:58.7759127Z               "line": 964
2026-06-20T11:21:58.7759262Z             },
2026-06-20T11:21:58.7759384Z             {
2026-06-20T11:21:58.7759562Z               "path": "crates/spt-daemon/src/daemon.rs",
2026-06-20T11:21:58.7759680Z               "line": 1016
2026-06-20T11:21:58.7759812Z             },
2026-06-20T11:21:58.7759926Z             {
2026-06-20T11:21:58.7760095Z               "path": "crates/spt-daemon/src/daemon.rs",
2026-06-20T11:21:58.7760225Z               "line": 1075
2026-06-20T11:21:58.7760345Z             },
2026-06-20T11:21:58.7760463Z             {
2026-06-20T11:21:58.7760645Z               "path": "crates/spt-daemon/src/deelevate.rs",
2026-06-20T11:21:58.7760778Z               "line": 527
2026-06-20T11:21:58.7760893Z             }
2026-06-20T11:21:58.7761017Z           ]
2026-06-20T11:21:58.7761141Z         },
2026-06-20T11:21:58.7761265Z         "int": {
2026-06-20T11:21:58.7761508Z           "complete": true,
2026-06-20T11:21:58.7761641Z           "evidence": [
2026-06-20T11:21:58.7761765Z             {
2026-06-20T11:21:58.7761936Z               "path": "crates/spt/tests/job_escape_e2e.rs",
2026-06-20T11:21:58.7762066Z               "line": 35
2026-06-20T11:21:58.7762186Z             },
2026-06-20T11:21:58.7762294Z             {
2026-06-20T11:21:58.7762467Z               "path": "crates/spt/tests/job_escape_e2e.rs",
2026-06-20T11:21:58.7762599Z               "line": 559
2026-06-20T11:21:58.7762717Z             },
2026-06-20T11:21:58.7762819Z             {
2026-06-20T11:21:58.7762994Z               "path": "crates/spt/tests/job_escape_e2e.rs",
2026-06-20T11:21:58.7763224Z               "line": 580
2026-06-20T11:21:58.7763342Z             }
2026-06-20T11:21:58.7763453Z           ]
2026-06-20T11:21:58.7763567Z         },
2026-06-20T11:21:58.7763690Z         "unit": {
2026-06-20T11:21:58.7763824Z           "complete": true,
2026-06-20T11:21:58.7763962Z           "evidence": [
2026-06-20T11:21:58.7764087Z             {
2026-06-20T11:21:58.7764248Z               "path": "crates/spt-daemon/src/daemon.rs",
2026-06-20T11:21:58.7764383Z               "line": 1202
2026-06-20T11:21:58.7764500Z             },
2026-06-20T11:21:58.7764621Z             {
2026-06-20T11:21:58.7764783Z               "path": "crates/spt-daemon/src/daemon.rs",
2026-06-20T11:21:58.7764910Z               "line": 1246
2026-06-20T11:21:58.7765034Z             },
2026-06-20T11:21:58.7765151Z             {
2026-06-20T11:21:58.7765322Z               "path": "crates/spt-daemon/src/daemon.rs",
2026-06-20T11:21:58.7765457Z               "line": 1260
2026-06-20T11:21:58.7765579Z             },
2026-06-20T11:21:58.7765695Z             {
2026-06-20T11:21:58.7765871Z               "path": "crates/spt-daemon/src/daemon.rs",
2026-06-20T11:21:58.7766005Z               "line": 1278
2026-06-20T11:21:58.7766124Z             },
2026-06-20T11:21:58.7766248Z             {
2026-06-20T11:21:58.7766415Z               "path": "crates/spt-daemon/src/daemon.rs",
2026-06-20T11:21:58.7766552Z               "line": 1302
2026-06-20T11:21:58.7766668Z             },
2026-06-20T11:21:58.7766781Z             {
2026-06-20T11:21:58.7766945Z               "path": "crates/spt-daemon/src/daemon.rs",
2026-06-20T11:21:58.7767067Z               "line": 1529
2026-06-20T11:21:58.7767187Z             }
2026-06-20T11:21:58.7767302Z           ]
2026-06-20T11:21:58.7767420Z         }
2026-06-20T11:21:58.7767527Z       }
2026-06-20T11:21:58.7767650Z     },
2026-06-20T11:21:58.7767758Z     {
2026-06-20T11:21:58.7767911Z       "id": "REQ-HAZARD-VIEWER-ISOLATION",
2026-06-20T11:21:58.7770429Z       "title": "A slow / dead / hostile VIEWER must NEVER stall the controller, the PTY child, or the session drain thread. The broker drain fans output to the controller on the authoritative blocking bounded path (advances delivered_through) but to each viewer via a bounded per-viewer channel with a dedicated writer thread; the drain `try_send`s under the log lock and a viewer whose bounded queue OVERFLOWS (can't keep up) is EVICTED (queue dropped, writer thread ends, removed from the viewers map) — the drain thread NEVER touches a viewer socket, so no viewer write can backpressure or block it. A soft viewer cap bounds the thread count. Viewer eviction never perturbs the controller stream, the delivered_through cursor, or the child.",
2026-06-20T11:21:58.7770585Z       "requiredStages": [
2026-06-20T11:21:58.7770708Z         "unit",
2026-06-20T11:21:58.7770829Z         "int"
2026-06-20T11:21:58.7770933Z       ],
2026-06-20T11:21:58.7771052Z       "stages": {
2026-06-20T11:21:58.7771163Z         "doc": {
2026-06-20T11:21:58.7771304Z           "complete": true,
2026-06-20T11:21:58.7771439Z           "evidence": [
2026-06-20T11:21:58.7771553Z             {
2026-06-20T11:21:58.7771706Z               "path": "docs/KNOWN-HAZARDS.md",
2026-06-20T11:21:58.7771834Z               "line": 381
2026-06-20T11:21:58.7771957Z             }
2026-06-20T11:21:58.7772064Z           ]
2026-06-20T11:21:58.7772292Z         },
2026-06-20T11:21:58.7772412Z         "impl": {
2026-06-20T11:21:58.7772545Z           "complete": true,
2026-06-20T11:21:58.7772670Z           "evidence": [
2026-06-20T11:21:58.7772788Z             {
2026-06-20T11:21:58.7772965Z               "path": "crates/spt-daemon/src/broker.rs",
2026-06-20T11:21:58.7773103Z               "line": 100
2026-06-20T11:21:58.7773225Z             }
2026-06-20T11:21:58.7773344Z           ]
2026-06-20T11:21:58.7773464Z         },
2026-06-20T11:21:58.7773588Z         "int": {
2026-06-20T11:21:58.7773722Z           "complete": true,
2026-06-20T11:21:58.7773854Z           "evidence": [
2026-06-20T11:21:58.7773961Z             {
2026-06-20T11:21:58.7774241Z               "path": "crates/spt-daemon/tests/attach.rs",
2026-06-20T11:21:58.7774375Z               "line": 1042
2026-06-20T11:21:58.7774493Z             }
2026-06-20T11:21:58.7774609Z           ]
2026-06-20T11:21:58.7774727Z         },
2026-06-20T11:21:58.7774856Z         "unit": {
2026-06-20T11:21:58.7774986Z           "complete": true,
2026-06-20T11:21:58.7775128Z           "evidence": [
2026-06-20T11:21:58.7775248Z             {
2026-06-20T11:21:58.7775418Z               "path": "crates/spt-daemon/src/broker.rs",
2026-06-20T11:21:58.7775551Z               "line": 2179
2026-06-20T11:21:58.7775670Z             }
2026-06-20T11:21:58.7775783Z           ]
2026-06-20T11:21:58.7775911Z         }
2026-06-20T11:21:58.7776031Z       }
2026-06-20T11:21:58.7776154Z     },
2026-06-20T11:21:58.7776269Z     {
2026-06-20T11:21:58.7776426Z       "id": "REQ-HAZARD-WAN-ORIGIN-AUTH",
2026-06-20T11:21:58.7777351Z       "title": "WAN-inbound origin is transport truth, never payload: the access gate's subject (ADR-0009 origin-node whitelist) is the QUIC handshake-proven remote node id from the broker's conn/stream table — a forged origin/node field inside record bytes is inert (7.5)",
2026-06-20T11:21:58.7777500Z       "requiredStages": [
2026-06-20T11:21:58.7777622Z         "doc",
2026-06-20T11:21:58.7777733Z         "impl",
2026-06-20T11:21:58.7777863Z         "unit"
2026-06-20T11:21:58.7777971Z       ],
2026-06-20T11:21:58.7778101Z       "stages": {
2026-06-20T11:21:58.7778219Z         "doc": {
2026-06-20T11:21:58.7778361Z           "complete": true,
2026-06-20T11:21:58.7778490Z           "evidence": [
2026-06-20T11:21:58.7778607Z             {
2026-06-20T11:21:58.7778754Z               "path": "docs/KNOWN-HAZARDS.md",
2026-06-20T11:21:58.7778884Z               "line": 366
2026-06-20T11:21:58.7779094Z             }
2026-06-20T11:21:58.7779218Z           ]
2026-06-20T11:21:58.7779340Z         },
2026-06-20T11:21:58.7779479Z         "impl": {
2026-06-20T11:21:58.7779608Z           "complete": true,
2026-06-20T11:21:58.7779738Z           "evidence": [
2026-06-20T11:21:58.7779856Z             {
2026-06-20T11:21:58.7780024Z               "path": "crates/spt-daemon/src/access.rs",
2026-06-20T11:21:58.7780151Z               "line": 87
2026-06-20T11:21:58.7780276Z             },
2026-06-20T11:21:58.7780396Z             {
2026-06-20T11:21:58.7780562Z               "path": "crates/spt-daemon/src/attach.rs",
2026-06-20T11:21:58.7780692Z               "line": 105
2026-06-20T11:21:58.7780800Z             },
2026-06-20T11:21:58.7780932Z             {
2026-06-20T11:21:58.7781103Z               "path": "crates/spt-daemon/src/dispatch.rs",
2026-06-20T11:21:58.7781235Z               "line": 55
2026-06-20T11:21:58.7781350Z             },
2026-06-20T11:21:58.7781455Z             {
2026-06-20T11:21:58.7781631Z               "path": "crates/spt-daemon/src/linkhost.rs",
2026-06-20T11:21:58.7781756Z               "line": 31
2026-06-20T11:21:58.7781883Z             },
2026-06-20T11:21:58.7781990Z             {
2026-06-20T11:21:58.7782165Z               "path": "crates/spt-daemon/src/linkhost.rs",
2026-06-20T11:21:58.7782290Z               "line": 446
2026-06-20T11:21:58.7782399Z             },
2026-06-20T11:21:58.7782522Z             {
2026-06-20T11:21:58.7782685Z               "path": "crates/spt-daemon/src/notifsync.rs",
2026-06-20T11:21:58.7782823Z               "line": 95
2026-06-20T11:21:58.7783052Z             },
2026-06-20T11:21:58.7783171Z             {
2026-06-20T11:21:58.7783352Z               "path": "crates/spt-daemon/src/propagate.rs",
2026-06-20T11:21:58.7783477Z               "line": 29
2026-06-20T11:21:58.7783602Z             },
2026-06-20T11:21:58.7783719Z             {
2026-06-20T11:21:58.7783891Z               "path": "crates/spt-daemon/src/propagate.rs",
2026-06-20T11:21:58.7784029Z               "line": 104
2026-06-20T11:21:58.7784148Z             },
2026-06-20T11:21:58.7784268Z             {
2026-06-20T11:21:58.7784448Z               "path": "crates/spt-daemon/src/registryhost.rs",
2026-06-20T11:21:58.7784578Z               "line": 208
2026-06-20T11:21:58.7784787Z             },
2026-06-20T11:21:58.7784911Z             {
2026-06-20T11:21:58.7785082Z               "path": "crates/spt-daemon/src/resthost.rs",
2026-06-20T11:21:58.7785198Z               "line": 28
2026-06-20T11:21:58.7785326Z             },
2026-06-20T11:21:58.7785436Z             {
2026-06-20T11:21:58.7785616Z               "path": "crates/spt-daemon/src/resthost.rs",
2026-06-20T11:21:58.7785746Z               "line": 74
2026-06-20T11:21:58.7785856Z             },
2026-06-20T11:21:58.7785978Z             {
2026-06-20T11:21:58.7786149Z               "path": "crates/spt-daemon/src/serveprobe.rs",
2026-06-20T11:21:58.7786286Z               "line": 32
2026-06-20T11:21:58.7786399Z             },
2026-06-20T11:21:58.7786515Z             {
2026-06-20T11:21:58.7786681Z               "path": "crates/spt-daemon/src/sync.rs",
2026-06-20T11:21:58.7786811Z               "line": 40
2026-06-20T11:21:58.7786934Z             },
2026-06-20T11:21:58.7787048Z             {
2026-06-20T11:21:58.7787221Z               "path": "crates/spt-daemon/src/sync.rs",
2026-06-20T11:21:58.7787349Z               "line": 184
2026-06-20T11:21:58.7787473Z             },
2026-06-20T11:21:58.7787583Z             {
2026-06-20T11:21:58.7787745Z               "path": "crates/spt-daemon/src/wan.rs",
2026-06-20T11:21:58.7787879Z               "line": 61
2026-06-20T11:21:58.7788002Z             },
2026-06-20T11:21:58.7788122Z             {
2026-06-20T11:21:58.7788278Z               "path": "crates/spt-daemon/src/wan.rs",
2026-06-20T11:21:58.7788408Z               "line": 131
2026-06-20T11:21:58.7788531Z             },
2026-06-20T11:21:58.7788661Z             {
2026-06-20T11:21:58.7788826Z               "path": "crates/spt-daemon/src/xfer.rs",
2026-06-20T11:21:58.7789021Z               "line": 223
2026-06-20T11:21:58.7789139Z             },
2026-06-20T11:21:58.7789266Z             {
2026-06-20T11:21:58.7789435Z               "path": "crates/spt-net/src/net/sync.rs",
2026-06-20T11:21:58.7789562Z               "line": 37
2026-06-20T11:21:58.7789688Z             },
2026-06-20T11:21:58.7789810Z             {
2026-06-20T11:21:58.7789978Z               "path": "crates/spt-net/src/net/update.rs",
2026-06-20T11:21:58.7790112Z               "line": 38
2026-06-20T11:21:58.7790230Z             },
2026-06-20T11:21:58.7790350Z             {
2026-06-20T11:21:58.7790516Z               "path": "crates/spt-net/src/net/wanmsg.rs",
2026-06-20T11:21:58.7790651Z               "line": 36
2026-06-20T11:21:58.7790774Z             },
2026-06-20T11:21:58.7790884Z             {
2026-06-20T11:21:58.7791050Z               "path": "crates/spt-net/src/net/xfer.rs",
2026-06-20T11:21:58.7791175Z               "line": 40
2026-06-20T11:21:58.7791300Z             }
2026-06-20T11:21:58.7791421Z           ]
2026-06-20T11:21:58.7791531Z         },
2026-06-20T11:21:58.7791649Z         "int": {
2026-06-20T11:21:58.7791781Z           "complete": false,
2026-06-20T11:21:58.7791915Z           "evidence": []
2026-06-20T11:21:58.7792034Z         },
2026-06-20T11:21:58.7792163Z         "unit": {
2026-06-20T11:21:58.7792297Z           "complete": true,
2026-06-20T11:21:58.7792420Z           "evidence": [
2026-06-20T11:21:58.7792545Z             {
2026-06-20T11:21:58.7792711Z               "path": "crates/spt-daemon/src/notifsync.rs",
2026-06-20T11:21:58.7792841Z               "line": 212
2026-06-20T11:21:58.7793087Z             },
2026-06-20T11:21:58.7793208Z             {
2026-06-20T11:21:58.7793379Z               "path": "crates/spt-daemon/tests/notifsync.rs",
2026-06-20T11:21:58.7793509Z               "line": 136
2026-06-20T11:21:58.7793631Z             },
2026-06-20T11:21:58.7793746Z             {
2026-06-20T11:21:58.7793926Z               "path": "crates/spt-daemon/tests/propagate.rs",
2026-06-20T11:21:58.7794056Z               "line": 685
2026-06-20T11:21:58.7794181Z             },
2026-06-20T11:21:58.7794303Z             {
2026-06-20T11:21:58.7794470Z               "path": "crates/spt-daemon/tests/sync.rs",
2026-06-20T11:21:58.7794598Z               "line": 224
2026-06-20T11:21:58.7794814Z             },
2026-06-20T11:21:58.7794932Z             {
2026-06-20T11:21:58.7795105Z               "path": "crates/spt-daemon/tests/wanmsg.rs",
2026-06-20T11:21:58.7795238Z               "line": 206
2026-06-20T11:21:58.7795366Z             },
2026-06-20T11:21:58.7795471Z             {
2026-06-20T11:21:58.7795642Z               "path": "crates/spt-net/src/net/notif.rs",
2026-06-20T11:21:58.7795767Z               "line": 112
2026-06-20T11:21:58.7795886Z             },
2026-06-20T11:21:58.7796001Z             {
2026-06-20T11:21:58.7796172Z               "path": "crates/spt-net/src/net/sync.rs",
2026-06-20T11:21:58.7796306Z               "line": 157
2026-06-20T11:21:58.7796425Z             },
2026-06-20T11:21:58.7796547Z             {
2026-06-20T11:21:58.7796719Z               "path": "crates/spt-net/src/net/update.rs",
2026-06-20T11:21:58.7796855Z               "line": 215
2026-06-20T11:21:58.7796974Z             },
2026-06-20T11:21:58.7797094Z             {
2026-06-20T11:21:58.7797260Z               "path": "crates/spt-net/src/net/wanmsg.rs",
2026-06-20T11:21:58.7797385Z               "line": 141
2026-06-20T11:21:58.7797504Z             },
2026-06-20T11:21:58.7797623Z             {
2026-06-20T11:21:58.7797790Z               "path": "crates/spt-net/src/net/xfer.rs",
2026-06-20T11:21:58.7797923Z               "line": 162
2026-06-20T11:21:58.7798053Z             }
2026-06-20T11:21:58.7798175Z           ]
2026-06-20T11:21:58.7798287Z         }
2026-06-20T11:21:58.7798405Z       }
2026-06-20T11:21:58.7798514Z     },
2026-06-20T11:21:58.7798635Z     {
2026-06-20T11:21:58.7798801Z       "id": "REQ-HAZARD-WIN-PTY-PROGRAM-RESOLVE",
2026-06-20T11:21:58.7800991Z       "title": "Native-PTY spawn must resolve a bare program name with PATHEXT precedence and run a non-PE target through its interpreter: portable-pty's own `which` takes the FIRST PATH match — an extensionless shebang shim (e.g. a node CLI `ccs` shipped beside `ccs.cmd`) — and CreateProcessW then rejects the non-PE file with os error 193 ('not a valid Win32 application'); spt-term resolves the program itself (PATHEXT order prefers .EXE over .CMD; .cmd/.bat → cmd.exe /d /c, .ps1 → powershell -NoProfile -File) so a bare harness/shell [session.self] command actually launches on Windows. Unix is a passthrough (execve honours the shebang).",
2026-06-20T11:21:58.7801149Z       "requiredStages": [
2026-06-20T11:21:58.7801272Z         "doc",
2026-06-20T11:21:58.7801386Z         "impl",
2026-06-20T11:21:58.7801516Z         "unit",
2026-06-20T11:21:58.7801629Z         "int"
2026-06-20T11:21:58.7801754Z       ],
2026-06-20T11:21:58.7801879Z       "stages": {
2026-06-20T11:21:58.7802001Z         "doc": {
2026-06-20T11:21:58.7802124Z           "complete": true,
2026-06-20T11:21:58.7802251Z           "evidence": [
2026-06-20T11:21:58.7802379Z             {
2026-06-20T11:21:58.7802533Z               "path": "docs/KNOWN-HAZARDS.md",
2026-06-20T11:21:58.7802661Z               "line": 250
2026-06-20T11:21:58.7802776Z             }
2026-06-20T11:21:58.7802900Z           ]
2026-06-20T11:21:58.7803009Z         },
2026-06-20T11:21:58.7803134Z         "impl": {
2026-06-20T11:21:58.7803271Z           "complete": true,
2026-06-20T11:21:58.7803391Z           "evidence": [
2026-06-20T11:21:58.7803509Z             {
2026-06-20T11:21:58.7803667Z               "path": "crates/spt-term/src/pty.rs",
2026-06-20T11:21:58.7803905Z               "line": 135
2026-06-20T11:21:58.7804025Z             },
2026-06-20T11:21:58.7804139Z             {
2026-06-20T11:21:58.7804296Z               "path": "crates/spt-term/src/pty.rs",
2026-06-20T11:21:58.7804417Z               "line": 157
2026-06-20T11:21:58.7804540Z             }
2026-06-20T11:21:58.7804646Z           ]
2026-06-20T11:21:58.7804769Z         },
2026-06-20T11:21:58.7804877Z         "int": {
2026-06-20T11:21:58.7805011Z           "complete": true,
2026-06-20T11:21:58.7805144Z           "evidence": [
2026-06-20T11:21:58.7805253Z             {
2026-06-20T11:21:58.7805431Z               "path": "crates/spt-term/tests/winspawn.rs",
2026-06-20T11:21:58.7805656Z               "line": 15
2026-06-20T11:21:58.7805779Z             }
2026-06-20T11:21:58.7805897Z           ]
2026-06-20T11:21:58.7806022Z         },
2026-06-20T11:21:58.7806150Z         "unit": {
2026-06-20T11:21:58.7806285Z           "complete": true,
2026-06-20T11:21:58.7806422Z           "evidence": [
2026-06-20T11:21:58.7806536Z             {
2026-06-20T11:21:58.7806704Z               "path": "crates/spt-term/src/winprog.rs",
2026-06-20T11:21:58.7806823Z               "line": 233
2026-06-20T11:21:58.7806943Z             }
2026-06-20T11:21:58.7807056Z           ]
2026-06-20T11:21:58.7807174Z         }
2026-06-20T11:21:58.7807298Z       }
2026-06-20T11:21:58.7807416Z     },
2026-06-20T11:21:58.7807534Z     {
2026-06-20T11:21:58.7807683Z       "id": "REQ-HAZARD-WINDOWS-PID-RECYCLE",
2026-06-20T11:21:58.7807911Z       "title": "Windows PID-recycling false positives guarded (5.1)",
2026-06-20T11:21:58.7808050Z       "requiredStages": [
2026-06-20T11:21:58.7808164Z         "impl",
2026-06-20T11:21:58.7808284Z         "unit"
2026-06-20T11:21:58.7808402Z       ],
2026-06-20T11:21:58.7808527Z       "stages": {
2026-06-20T11:21:58.7808650Z         "doc": {
2026-06-20T11:21:58.7808779Z           "complete": false,
2026-06-20T11:21:58.7808908Z           "evidence": []
2026-06-20T11:21:58.7809108Z         },
2026-06-20T11:21:58.7809237Z         "impl": {
2026-06-20T11:21:58.7809375Z           "complete": true,
2026-06-20T11:21:58.7809500Z           "evidence": [
2026-06-20T11:21:58.7809623Z             {
2026-06-20T11:21:58.7809786Z               "path": "crates/spt-msg/src/deliver.rs",
2026-06-20T11:21:58.7809919Z               "line": 95
2026-06-20T11:21:58.7810036Z             },
2026-06-20T11:21:58.7810156Z             {
2026-06-20T11:21:58.7810320Z               "path": "crates/spt/src/api/startup.rs",
2026-06-20T11:21:58.7810450Z               "line": 117
2026-06-20T11:21:58.7810560Z             }
2026-06-20T11:21:58.7810682Z           ]
2026-06-20T11:21:58.7810798Z         },
2026-06-20T11:21:58.7810926Z         "int": {
2026-06-20T11:21:58.7811065Z           "complete": false,
2026-06-20T11:21:58.7811188Z           "evidence": []
2026-06-20T11:21:58.7811307Z         },
2026-06-20T11:21:58.7811437Z         "unit": {
2026-06-20T11:21:58.7811566Z           "complete": true,
2026-06-20T11:21:58.7811694Z           "evidence": [
2026-06-20T11:21:58.7811814Z             {
2026-06-20T11:21:58.7811980Z               "path": "crates/spt-msg/src/deliver.rs",
2026-06-20T11:21:58.7812105Z               "line": 250
2026-06-20T11:21:58.7812228Z             },
2026-06-20T11:21:58.7812334Z             {
2026-06-20T11:21:58.7812495Z               "path": "crates/spt-store/src/proc.rs",
2026-06-20T11:21:58.7812613Z               "line": 412
2026-06-20T11:21:58.7812732Z             },
2026-06-20T11:21:58.7812858Z             {
2026-06-20T11:21:58.7813021Z               "path": "crates/spt/src/api/startup.rs",
2026-06-20T11:21:58.7813145Z               "line": 611
2026-06-20T11:21:58.7813263Z             },
2026-06-20T11:21:58.7813389Z             {
2026-06-20T11:21:58.7813550Z               "path": "crates/spt/src/api/startup.rs",
2026-06-20T11:21:58.7813680Z               "line": 669
2026-06-20T11:21:58.7813803Z             }
2026-06-20T11:21:58.7813927Z           ]
2026-06-20T11:21:58.7814042Z         }
2026-06-20T11:21:58.7814261Z       }
2026-06-20T11:21:58.7814375Z     },
2026-06-20T11:21:58.7814489Z     {
2026-06-20T11:21:58.7814643Z       "id": "REQ-HAZARD-WMI-DAEMON-WINDOW",
2026-06-20T11:21:58.7817392Z       "title": "`spt daemon start` launches the daemon with NO visible console window. REGRESSION (v0.12.1 L1.5): the WMI job-neutral launch (spawn_daemon_via_wmi) set CREATE_NO_WINDOW on the launching powershell but NOT on the Win32_Process.Create call — Win32_Process.Create does not inherit it, so the spawned cmd.exe env-forwarding wrapper popped a console window on every cold-start (violating REQ-INSTALL-10's v0.7.4 no-persistent-window invariant; the old detached_no_inherit path set DETACHED_PROCESS|CREATE_NO_WINDOW). FIX: pass a Win32_ProcessStartup with CreateFlags=DETACHED_PROCESS (0x8 — no console so no window; CREATE_NO_WINDOW 0x08000000 is NOT a valid Win32_ProcessStartup flag → ReturnValue 21 invalid-param, which is why the naive port fails) + ShowWindow=SW_HIDE(0) belt, via the ProcessStartupInformation argument. (v0.12.2)",
2026-06-20T11:21:58.7817640Z       "requiredStages": [
2026-06-20T11:21:58.7817753Z         "impl",
2026-06-20T11:21:58.7817872Z         "unit",
2026-06-20T11:21:58.7817985Z         "int"
2026-06-20T11:21:58.7818104Z       ],
2026-06-20T11:21:58.7818229Z       "stages": {
2026-06-20T11:21:58.7818347Z         "doc": {
2026-06-20T11:21:58.7818481Z           "complete": false,
2026-06-20T11:21:58.7818614Z           "evidence": []
2026-06-20T11:21:58.7818738Z         },
2026-06-20T11:21:58.7818848Z         "impl": {
2026-06-20T11:21:58.7819063Z           "complete": true,
2026-06-20T11:21:58.7819192Z           "evidence": [
2026-06-20T11:21:58.7819320Z             {
2026-06-20T11:21:58.7819506Z               "path": "crates/spt-daemon/src/daemon.rs",
2026-06-20T11:21:58.7819625Z               "line": 925
2026-06-20T11:21:58.7819746Z             },
2026-06-20T11:21:58.7819868Z             {
2026-06-20T11:21:58.7820041Z               "path": "crates/spt-daemon/src/daemon.rs",
2026-06-20T11:21:58.7820178Z               "line": 994
2026-06-20T11:21:58.7820293Z             }
2026-06-20T11:21:58.7820413Z           ]
2026-06-20T11:21:58.7820531Z         },
2026-06-20T11:21:58.7820649Z         "int": {
2026-06-20T11:21:58.7820782Z           "complete": true,
2026-06-20T11:21:58.7820909Z           "evidence": [
2026-06-20T11:21:58.7821033Z             {
2026-06-20T11:21:58.7821200Z               "path": "crates/spt/tests/job_escape_e2e.rs",
2026-06-20T11:21:58.7821325Z               "line": 187
2026-06-20T11:21:58.7821449Z             },
2026-06-20T11:21:58.7821576Z             {
2026-06-20T11:21:58.7821749Z               "path": "crates/spt/tests/job_escape_e2e.rs",
2026-06-20T11:21:58.7821891Z               "line": 343
2026-06-20T11:21:58.7822016Z             }
2026-06-20T11:21:58.7822135Z           ]
2026-06-20T11:21:58.7825737Z         },
2026-06-20T11:21:58.7825890Z         "unit": {
2026-06-20T11:21:58.7826035Z           "complete": true,
2026-06-20T11:21:58.7826165Z           "evidence": [
2026-06-20T11:21:58.7826298Z             {
2026-06-20T11:21:58.7826485Z               "path": "crates/spt-daemon/src/daemon.rs",
2026-06-20T11:21:58.7826622Z               "line": 1206
2026-06-20T11:21:58.7826747Z             },
2026-06-20T11:21:58.7826865Z             {
2026-06-20T11:21:58.7827022Z               "path": "crates/spt/src/cli.rs",
2026-06-20T11:21:58.7827143Z               "line": 8116
2026-06-20T11:21:58.7827265Z             }
2026-06-20T11:21:58.7827386Z           ]
2026-06-20T11:21:58.7827495Z         }
2026-06-20T11:21:58.7827623Z       }
2026-06-20T11:21:58.7827729Z     },
2026-06-20T11:21:58.7827842Z     {
2026-06-20T11:21:58.7827995Z       "id": "REQ-HAZARD-WORKER-PATH",
2026-06-20T11:21:58.7828243Z       "title": "Single source of truth for Worker/Psyche perch location (1.5)",
2026-06-20T11:21:58.7828385Z       "requiredStages": [
2026-06-20T11:21:58.7828498Z         "impl",
2026-06-20T11:21:58.7828611Z         "unit"
2026-06-20T11:21:58.7828731Z       ],
2026-06-20T11:21:58.7828855Z       "stages": {
2026-06-20T11:21:58.7829203Z         "doc": {
2026-06-20T11:21:58.7829380Z           "complete": false,
2026-06-20T11:21:58.7829503Z           "evidence": []
2026-06-20T11:21:58.7829633Z         },
2026-06-20T11:21:58.7829757Z         "impl": {
2026-06-20T11:21:58.7829885Z           "complete": true,
2026-06-20T11:21:58.7830010Z           "evidence": [
2026-06-20T11:21:58.7830119Z             {
2026-06-20T11:21:58.7830287Z               "path": "crates/spt-store/src/perch.rs",
2026-06-20T11:21:58.7830409Z               "line": 262
2026-06-20T11:21:58.7830514Z             },
2026-06-20T11:21:58.7830644Z             {
2026-06-20T11:21:58.7830810Z               "path": "crates/spt-store/src/perch.rs",
2026-06-20T11:21:58.7831029Z               "line": 307
2026-06-20T11:21:58.7831138Z             },
2026-06-20T11:21:58.7831267Z             {
2026-06-20T11:21:58.7831427Z               "path": "crates/spt-store/src/perch.rs",
2026-06-20T11:21:58.7831555Z               "line": 319
2026-06-20T11:21:58.7831675Z             }
2026-06-20T11:21:58.7831793Z           ]
2026-06-20T11:21:58.7831913Z         },
2026-06-20T11:21:58.7832023Z         "int": {
2026-06-20T11:21:58.7832156Z           "complete": false,
2026-06-20T11:21:58.7832285Z           "evidence": []
2026-06-20T11:21:58.7832399Z         },
2026-06-20T11:21:58.7832519Z         "unit": {
2026-06-20T11:21:58.7832647Z           "complete": true,
2026-06-20T11:21:58.7832781Z           "evidence": [
2026-06-20T11:21:58.7832891Z             {
2026-06-20T11:21:58.7833062Z               "path": "crates/spt-store/src/perch.rs",
2026-06-20T11:21:58.7833192Z               "line": 455
2026-06-20T11:21:58.7833310Z             },
2026-06-20T11:21:58.7833435Z             {
2026-06-20T11:21:58.7833592Z               "path": "crates/spt-store/src/perch.rs",
2026-06-20T11:21:58.7833719Z               "line": 499
2026-06-20T11:21:58.7833847Z             }
2026-06-20T11:21:58.7833965Z           ]
2026-06-20T11:21:58.7834083Z         }
2026-06-20T11:21:58.7834194Z       }
2026-06-20T11:21:58.7834317Z     },
2026-06-20T11:21:58.7834432Z     {
2026-06-20T11:21:58.7834576Z       "id": "REQ-HOST-RUN-1",
2026-06-20T11:21:58.7837393Z       "title": "spt-hosted harness bringup: `spt endpoint run` spawns an adapter's `[session.self]` command template into a broker-held PTY (the spawn-session seam, brain.rs spawn_session_pid — same broker path shellhost.rs launch_shell_brokered_in uses for shells, now for kind=\"harness\" self-role), registers the perch under the given endpoint id, returns the id. Reverses today's harness-hosted-only launch (external launcher → `api bind`). Non-interactive flag set (--adapter <a[:profile]> --id <id> --create --resume <session> --attach|--start|--view) covers every terminal action of the W2 interactive picker so shortcuts (cc-<id>) bake fully non-interactive launches; composite adapter:profile resolves via registry::resolve_option leaf-replace overlay.",
2026-06-20T11:21:58.7837554Z       "requiredStages": [
2026-06-20T11:21:58.7837669Z         "impl",
2026-06-20T11:21:58.7837798Z         "unit",
2026-06-20T11:21:58.7837916Z         "int"
2026-06-20T11:21:58.7838037Z       ],
2026-06-20T11:21:58.7838155Z       "stages": {
2026-06-20T11:21:58.7838275Z         "doc": {
2026-06-20T11:21:58.7838402Z           "complete": false,
2026-06-20T11:21:58.7838537Z           "evidence": []
2026-06-20T11:21:58.7838662Z         },
2026-06-20T11:21:58.7838783Z         "impl": {
2026-06-20T11:21:58.7838921Z           "complete": true,
2026-06-20T11:21:58.7839134Z           "evidence": [
2026-06-20T11:21:58.7839263Z             {
2026-06-20T11:21:58.7839477Z               "path": "crates/spt-daemon/src/harnesshost.rs",
2026-06-20T11:21:58.7839607Z               "line": 30
2026-06-20T11:21:58.7839739Z             },
2026-06-20T11:21:58.7839854Z             {
2026-06-20T11:21:58.7840031Z               "path": "crates/spt-daemon/src/harnesshost.rs",
2026-06-20T11:21:58.7840159Z               "line": 76
2026-06-20T11:21:58.7840283Z             },
2026-06-20T11:21:58.7840402Z             {
2026-06-20T11:21:58.7840707Z               "path": "crates/spt-daemon/src/harnesshost.rs",
2026-06-20T11:21:58.7840832Z               "line": 181
2026-06-20T11:21:58.7840941Z             },
2026-06-20T11:21:58.7841070Z             {
2026-06-20T11:21:58.7841219Z               "path": "crates/spt/src/cli.rs",
2026-06-20T11:21:58.7841351Z               "line": 1266
2026-06-20T11:21:58.7841476Z             }
2026-06-20T11:21:58.7841594Z           ]
2026-06-20T11:21:58.7841716Z         },
2026-06-20T11:21:58.7841837Z         "int": {
2026-06-20T11:21:58.7841977Z           "complete": true,
2026-06-20T11:21:58.7842106Z           "evidence": [
2026-06-20T11:21:58.7842226Z             {
2026-06-20T11:21:58.7842664Z               "path": "crates/spt-daemon/tests/attach.rs",
2026-06-20T11:21:58.7842793Z               "line": 285
2026-06-20T11:21:58.7842912Z             }
2026-06-20T11:21:58.7843031Z           ]
2026-06-20T11:21:58.7843151Z         },
2026-06-20T11:21:58.7843269Z         "unit": {
2026-06-20T11:21:58.7843409Z           "complete": true,
2026-06-20T11:21:58.7843536Z           "evidence": [
2026-06-20T11:21:58.7843655Z             {
2026-06-20T11:21:58.7843827Z               "path": "crates/spt-daemon/src/harnesshost.rs",
2026-06-20T11:21:58.7843956Z               "line": 229
2026-06-20T11:21:58.7844081Z             },
2026-06-20T11:21:58.7844194Z             {
2026-06-20T11:21:58.7844375Z               "path": "crates/spt-daemon/src/harnesshost.rs",
2026-06-20T11:21:58.7844501Z               "line": 296
2026-06-20T11:21:58.7844610Z             },
2026-06-20T11:21:58.7844740Z             {
2026-06-20T11:21:58.7844910Z               "path": "crates/spt-daemon/src/harnesshost.rs",
2026-06-20T11:21:58.7845045Z               "line": 419
2026-06-20T11:21:58.7845150Z             }
2026-06-20T11:21:58.7845268Z           ]
2026-06-20T11:21:58.7845393Z         }
2026-06-20T11:21:58.7845493Z       }
2026-06-20T11:21:58.7845612Z     },
2026-06-20T11:21:58.7845736Z     {
2026-06-20T11:21:58.7845878Z       "id": "REQ-HOST-RUN-2",
2026-06-20T11:21:58.7847852Z       "title": "Project-scoped working directory for spt-hosted bringup: `spt endpoint run` lands the broker-spawned harness PTY in the user's PROJECT cwd, not the daemon's, via an additive `SpawnReq.cwd` field carried through the broker PTY spawn (portable-pty CommandBuilder cwd). N-1-safe wire change (additive, defaulted). Required because the consumer (Claude Code) is project-scoped: broker-inherited cwd = the daemon's cwd = the wrong `.claude`, wrong session history, wrong digest source; `cc <id>` at a project root MUST land the harness in that project. W1 ships broker-inherited cwd as a bringup-proof shortcut only; this REQ must land before the M12 gate (doyle, 2026-06-14).",
2026-06-20T11:21:58.7848005Z       "requiredStages": [
2026-06-20T11:21:58.7848128Z         "impl",
2026-06-20T11:21:58.7848253Z         "unit",
2026-06-20T11:21:58.7848382Z         "int"
2026-06-20T11:21:58.7848501Z       ],
2026-06-20T11:21:58.7848629Z       "stages": {
2026-06-20T11:21:58.7848762Z         "doc": {
2026-06-20T11:21:58.7848888Z           "complete": false,
2026-06-20T11:21:58.7849092Z           "evidence": []
2026-06-20T11:21:58.7849198Z         },
2026-06-20T11:21:58.7849343Z         "impl": {
2026-06-20T11:21:58.7849472Z           "complete": true,
2026-06-20T11:21:58.7849600Z           "evidence": [
2026-06-20T11:21:58.7849718Z             {
2026-06-20T11:21:58.7849890Z               "path": "crates/spt-daemon/src/harnesshost.rs",
2026-06-20T11:21:58.7850023Z               "line": 182
2026-06-20T11:21:58.7850142Z             },
2026-06-20T11:21:58.7850267Z             {
2026-06-20T11:21:58.7850424Z               "path": "crates/spt-term/src/pty.rs",
2026-06-20T11:21:58.7850552Z               "line": 113
2026-06-20T11:21:58.7850671Z             }
2026-06-20T11:21:58.7850787Z           ]
2026-06-20T11:21:58.7850901Z         },
2026-06-20T11:21:58.7851024Z         "int": {
2026-06-20T11:21:58.7851163Z           "complete": true,
2026-06-20T11:21:58.7851291Z           "evidence": [
2026-06-20T11:21:58.7852481Z             {
2026-06-20T11:21:58.7852661Z               "path": "crates/spt-daemon/tests/attach.rs",
2026-06-20T11:21:58.7852786Z               "line": 572
2026-06-20T11:21:58.7852909Z             }
2026-06-20T11:21:58.7853015Z           ]
2026-06-20T11:21:58.7853138Z         },
2026-06-20T11:21:58.7853257Z         "unit": {
2026-06-20T11:21:58.7853391Z           "complete": true,
2026-06-20T11:21:58.7853514Z           "evidence": [
2026-06-20T11:21:58.7853625Z             {
2026-06-20T11:21:58.7853796Z               "path": "crates/spt-term/tests/surface.rs",
2026-06-20T11:21:58.7853920Z               "line": 86
2026-06-20T11:21:58.7854035Z             }
2026-06-20T11:21:58.7854255Z           ]
2026-06-20T11:21:58.7854364Z         }
2026-06-20T11:21:58.7854478Z       }
2026-06-20T11:21:58.7854589Z     },
2026-06-20T11:21:58.7854702Z     {
2026-06-20T11:21:58.7854825Z       "id": "REQ-INFRA-1",
2026-06-20T11:21:58.7855066Z       "title": "GitHub issue tracking for v1; tangled.org as migration target",
2026-06-20T11:21:58.7855218Z       "requiredStages": [],
2026-06-20T11:21:58.7855329Z       "stages": {
2026-06-20T11:21:58.7855452Z         "doc": {
2026-06-20T11:21:58.7855567Z           "complete": false,
2026-06-20T11:21:58.7855691Z           "evidence": []
2026-06-20T11:21:58.7855799Z         },
2026-06-20T11:21:58.7855915Z         "impl": {
2026-06-20T11:21:58.7856058Z           "complete": false,
2026-06-20T11:21:58.7856182Z           "evidence": []
2026-06-20T11:21:58.7856296Z         },
2026-06-20T11:21:58.7856405Z         "int": {
2026-06-20T11:21:58.7856536Z           "complete": false,
2026-06-20T11:21:58.7856654Z           "evidence": []
2026-06-20T11:21:58.7856768Z         },
2026-06-20T11:21:58.7856888Z         "unit": {
2026-06-20T11:21:58.7857001Z           "complete": false,
2026-06-20T11:21:58.7857112Z           "evidence": []
2026-06-20T11:21:58.7857222Z         }
2026-06-20T11:21:58.7857335Z       }
2026-06-20T11:21:58.7857432Z     },
2026-06-20T11:21:58.7857542Z     {
2026-06-20T11:21:58.7857678Z       "id": "REQ-INST-1",
2026-06-20T11:21:58.7857870Z       "title": "endpoint ID vs instance split (adapter-agnostic ID)",
2026-06-20T11:21:58.7858002Z       "requiredStages": [],
2026-06-20T11:21:58.7858112Z       "stages": {
2026-06-20T11:21:58.7858217Z         "doc": {
2026-06-20T11:21:58.7858340Z           "complete": false,
2026-06-20T11:21:58.7858470Z           "evidence": []
2026-06-20T11:21:58.7858575Z         },
2026-06-20T11:21:58.7858678Z         "impl": {
2026-06-20T11:21:58.7858804Z           "complete": false,
2026-06-20T11:21:58.7858918Z           "evidence": []
2026-06-20T11:21:58.7859100Z         },
2026-06-20T11:21:58.7859208Z         "int": {
2026-06-20T11:21:58.7859361Z           "complete": false,
2026-06-20T11:21:58.7859486Z           "evidence": []
2026-06-20T11:21:58.7859590Z         },
2026-06-20T11:21:58.7859700Z         "unit": {
2026-06-20T11:21:58.7859824Z           "complete": false,
2026-06-20T11:21:58.7859951Z           "evidence": []
2026-06-20T11:21:58.7860061Z         }
2026-06-20T11:21:58.7860174Z       }
2026-06-20T11:21:58.7860287Z     },
2026-06-20T11:21:58.7860388Z     {
2026-06-20T11:21:58.7860522Z       "id": "REQ-INST-10",
2026-06-20T11:21:58.7860788Z       "title": "Qualified addressing [subnet:]id[@node] + ambiguity forces qualification",
2026-06-20T11:21:58.7860921Z       "requiredStages": [
2026-06-20T11:21:58.7861023Z         "impl",
2026-06-20T11:21:58.7861137Z         "unit"
2026-06-20T11:21:58.7861255Z       ],
2026-06-20T11:21:58.7861361Z       "stages": {
2026-06-20T11:21:58.7861471Z         "doc": {
2026-06-20T11:21:58.7861594Z           "complete": false,
2026-06-20T11:21:58.7861709Z           "evidence": []
2026-06-20T11:21:58.7861814Z         },
2026-06-20T11:21:58.7861923Z         "impl": {
2026-06-20T11:21:58.7862048Z           "complete": true,
2026-06-20T11:21:58.7862157Z           "evidence": [
2026-06-20T11:21:58.7862263Z             {
2026-06-20T11:21:58.7862432Z               "path": "crates/spt-net/src/net/registry.rs",
2026-06-20T11:21:58.7862678Z               "line": 648
2026-06-20T11:21:58.7862785Z             },
2026-06-20T11:21:58.7862890Z             {
2026-06-20T11:21:58.7863055Z               "path": "crates/spt-net/src/net/registry.rs",
2026-06-20T11:21:58.7863173Z               "line": 725
2026-06-20T11:21:58.7863284Z             },
2026-06-20T11:21:58.7863393Z             {
2026-06-20T11:21:58.7863551Z               "path": "crates/spt-proto/src/addr.rs",
2026-06-20T11:21:58.7863655Z               "line": 13
2026-06-20T11:21:58.7863769Z             },
2026-06-20T11:21:58.7863880Z             {
2026-06-20T11:21:58.7864032Z               "path": "crates/spt-proto/src/addr.rs",
2026-06-20T11:21:58.7864252Z               "line": 67
2026-06-20T11:21:58.7864357Z             },
2026-06-20T11:21:58.7864461Z             {
2026-06-20T11:21:58.7864609Z               "path": "crates/spt/src/wansend.rs",
2026-06-20T11:21:58.7864747Z               "line": 18
2026-06-20T11:21:58.7864858Z             },
2026-06-20T11:21:58.7864971Z             {
2026-06-20T11:21:58.7865120Z               "path": "crates/spt/src/wansend.rs",
2026-06-20T11:21:58.7865230Z               "line": 444
2026-06-20T11:21:58.7865338Z             }
2026-06-20T11:21:58.7865437Z           ]
2026-06-20T11:21:58.7865538Z         },
2026-06-20T11:21:58.7865664Z         "int": {
2026-06-20T11:21:58.7865793Z           "complete": false,
2026-06-20T11:21:58.7865918Z           "evidence": []
2026-06-20T11:21:58.7866026Z         },
2026-06-20T11:21:58.7866137Z         "unit": {
2026-06-20T11:21:58.7866251Z           "complete": true,
2026-06-20T11:21:58.7866365Z           "evidence": [
2026-06-20T11:21:58.7866471Z             {
2026-06-20T11:21:58.7866651Z               "path": "crates/spt-net/src/net/registry.rs",
2026-06-20T11:21:58.7866776Z               "line": 932
2026-06-20T11:21:58.7866880Z             },
2026-06-20T11:21:58.7866985Z             {
2026-06-20T11:21:58.7867138Z               "path": "crates/spt-net/src/net/registry.rs",
2026-06-20T11:21:58.7867309Z               "line": 1309
2026-06-20T11:21:58.7867420Z             },
2026-06-20T11:21:58.7867514Z             {
2026-06-20T11:21:58.7867682Z               "path": "crates/spt-net/src/net/registry.rs",
2026-06-20T11:21:58.7867805Z               "line": 1320
2026-06-20T11:21:58.7867905Z             },
2026-06-20T11:21:58.7868011Z             {
2026-06-20T11:21:58.7868167Z               "path": "crates/spt-net/src/net/registry.rs",
2026-06-20T11:21:58.7868285Z               "line": 1336
2026-06-20T11:21:58.7868391Z             },
2026-06-20T11:21:58.7868491Z             {
2026-06-20T11:21:58.7868643Z               "path": "crates/spt-net/src/net/registry.rs",
2026-06-20T11:21:58.7868768Z               "line": 1352
2026-06-20T11:21:58.7868877Z             },
2026-06-20T11:21:58.7869049Z             {
2026-06-20T11:21:58.7869196Z               "path": "crates/spt-net/src/net/registry.rs",
2026-06-20T11:21:58.7869359Z               "line": 1374
2026-06-20T11:21:58.7869492Z             },
2026-06-20T11:21:58.7869621Z             {
2026-06-20T11:21:58.7869817Z               "path": "crates/spt-net/src/net/registry.rs",
2026-06-20T11:21:58.7869984Z               "line": 1679
2026-06-20T11:21:58.7870130Z             },
2026-06-20T11:21:58.7870290Z             {
2026-06-20T11:21:58.7870468Z               "path": "crates/spt-proto/src/addr.rs",
2026-06-20T11:21:58.7870592Z               "line": 130
2026-06-20T11:21:58.7870697Z             },
2026-06-20T11:21:58.7870804Z             {
2026-06-20T11:21:58.7870957Z               "path": "crates/spt-proto/src/addr.rs",
2026-06-20T11:21:58.7871072Z               "line": 167
2026-06-20T11:21:58.7871181Z             },
2026-06-20T11:21:58.7871282Z             {
2026-06-20T11:21:58.7871434Z               "path": "crates/spt-proto/src/addr.rs",
2026-06-20T11:21:58.7871544Z               "line": 175
2026-06-20T11:21:58.7871654Z             },
2026-06-20T11:21:58.7871754Z             {
2026-06-20T11:21:58.7871897Z               "path": "crates/spt-proto/src/addr.rs",
2026-06-20T11:21:58.7872130Z               "line": 183
2026-06-20T11:21:58.7872236Z             },
2026-06-20T11:21:58.7872345Z             {
2026-06-20T11:21:58.7872488Z               "path": "crates/spt/src/wansend.rs",
2026-06-20T11:21:58.7872603Z               "line": 896
2026-06-20T11:21:58.7872712Z             }
2026-06-20T11:21:58.7872818Z           ]
2026-06-20T11:21:58.7872932Z         }
2026-06-20T11:21:58.7873027Z       }
2026-06-20T11:21:58.7873133Z     },
2026-06-20T11:21:58.7873224Z     {
2026-06-20T11:21:58.7873340Z       "id": "REQ-INST-11",
2026-06-20T11:21:58.7873606Z       "title": "spt rename <id> rippled to all instances (collision-checked, 6.5-reconciled)",
2026-06-20T11:21:58.7873829Z       "requiredStages": [
2026-06-20T11:21:58.7873944Z         "impl",
2026-06-20T11:21:58.7874048Z         "unit"
2026-06-20T11:21:58.7874164Z       ],
2026-06-20T11:21:58.7874273Z       "stages": {
2026-06-20T11:21:58.7874382Z         "doc": {
2026-06-20T11:21:58.7874512Z           "complete": false,
2026-06-20T11:21:58.7874625Z           "evidence": []
2026-06-20T11:21:58.7874726Z         },
2026-06-20T11:21:58.7874836Z         "impl": {
2026-06-20T11:21:58.7874954Z           "complete": true,
2026-06-20T11:21:58.7875065Z           "evidence": [
2026-06-20T11:21:58.7875170Z             {
2026-06-20T11:21:58.7875336Z               "path": "crates/spt-net/src/net/registry.rs",
2026-06-20T11:21:58.7875447Z               "line": 514
2026-06-20T11:21:58.7875555Z             },
2026-06-20T11:21:58.7875656Z             {
2026-06-20T11:21:58.7875827Z               "path": "crates/spt-store/src/contextstore.rs",
2026-06-20T11:21:58.7875950Z               "line": 297
2026-06-20T11:21:58.7876050Z             },
2026-06-20T11:21:58.7876168Z             {
2026-06-20T11:21:58.7876319Z               "path": "crates/spt-store/src/rename.rs",
2026-06-20T11:21:58.7876444Z               "line": 59
2026-06-20T11:21:58.7876548Z             },
2026-06-20T11:21:58.7876658Z             {
2026-06-20T11:21:58.7876797Z               "path": "crates/spt/src/cli.rs",
2026-06-20T11:21:58.7876906Z               "line": 5291
2026-06-20T11:21:58.7877007Z             },
2026-06-20T11:21:58.7877107Z             {
2026-06-20T11:21:58.7877249Z               "path": "crates/spt/src/cli.rs",
2026-06-20T11:21:58.7877360Z               "line": 7137
2026-06-20T11:21:58.7877469Z             }
2026-06-20T11:21:58.7877578Z           ]
2026-06-20T11:21:58.7877680Z         },
2026-06-20T11:21:58.7877793Z         "int": {
2026-06-20T11:21:58.7877912Z           "complete": false,
2026-06-20T11:21:58.7878037Z           "evidence": []
2026-06-20T11:21:58.7878136Z         },
2026-06-20T11:21:58.7878242Z         "unit": {
2026-06-20T11:21:58.7878356Z           "complete": true,
2026-06-20T11:21:58.7878456Z           "evidence": [
2026-06-20T11:21:58.7878557Z             {
2026-06-20T11:21:58.7878708Z               "path": "crates/spt-net/src/net/registry.rs",
2026-06-20T11:21:58.7878826Z               "line": 1479
2026-06-20T11:21:58.7878932Z             },
2026-06-20T11:21:58.7879141Z             {
2026-06-20T11:21:58.7879280Z               "path": "crates/spt-net/src/net/registry.rs",
2026-06-20T11:21:58.7879432Z               "line": 1512
2026-06-20T11:21:58.7879557Z             },
2026-06-20T11:21:58.7879662Z             {
2026-06-20T11:21:58.7879823Z               "path": "crates/spt-store/src/contextstore.rs",
2026-06-20T11:21:58.7879933Z               "line": 527
2026-06-20T11:21:58.7880043Z             },
2026-06-20T11:21:58.7880142Z             {
2026-06-20T11:21:58.7880291Z               "path": "crates/spt-store/src/rename.rs",
2026-06-20T11:21:58.7880415Z               "line": 160
2026-06-20T11:21:58.7880521Z             },
2026-06-20T11:21:58.7880634Z             {
2026-06-20T11:21:58.7880777Z               "path": "crates/spt-store/src/rename.rs",
2026-06-20T11:21:58.7880906Z               "line": 190
2026-06-20T11:21:58.7881006Z             },
2026-06-20T11:21:58.7881109Z             {
2026-06-20T11:21:58.7881257Z               "path": "crates/spt-store/src/rename.rs",
2026-06-20T11:21:58.7881484Z               "line": 225
2026-06-20T11:21:58.7881585Z             },
2026-06-20T11:21:58.7881679Z             {
2026-06-20T11:21:58.7881832Z               "path": "crates/spt/src/cli.rs",
2026-06-20T11:21:58.7881951Z               "line": 7994
2026-06-20T11:21:58.7882051Z             }
2026-06-20T11:21:58.7882157Z           ]
2026-06-20T11:21:58.7882266Z         }
2026-06-20T11:21:58.7882375Z       }
2026-06-20T11:21:58.7882476Z     },
2026-06-20T11:21:58.7882586Z     {
2026-06-20T11:21:58.7882695Z       "id": "REQ-INST-12",
2026-06-20T11:21:58.7883024Z       "title": "Endpoint visibility per-(endpoint,subnet): excluded semantics, OR-of-defaults + override, gates sync",
2026-06-20T11:21:58.7883243Z       "requiredStages": [
2026-06-20T11:21:58.7883349Z         "impl",
2026-06-20T11:21:58.7883459Z         "unit"
2026-06-20T11:21:58.7883567Z       ],
2026-06-20T11:21:58.7883683Z       "stages": {
2026-06-20T11:21:58.7883784Z         "doc": {
2026-06-20T11:21:58.7883900Z           "complete": false,
2026-06-20T11:21:58.7884015Z           "evidence": []
2026-06-20T11:21:58.7884119Z         },
2026-06-20T11:21:58.7884222Z         "impl": {
2026-06-20T11:21:58.7884342Z           "complete": true,
2026-06-20T11:21:58.7884452Z           "evidence": [
2026-06-20T11:21:58.7884556Z             {
2026-06-20T11:21:58.7884705Z               "path": "crates/spt-net/src/net/registry.rs",
2026-06-20T11:21:58.7884824Z               "line": 566
2026-06-20T11:21:58.7884932Z             },
2026-06-20T11:21:58.7885043Z             {
2026-06-20T11:21:58.7885195Z               "path": "crates/spt-net/src/net/registry.rs",
2026-06-20T11:21:58.7885315Z               "line": 659
2026-06-20T11:21:58.7885424Z             },
2026-06-20T11:21:58.7885528Z             {
2026-06-20T11:21:58.7885683Z               "path": "crates/spt-net/src/net/registry.rs",
2026-06-20T11:21:58.7885795Z               "line": 739
2026-06-20T11:21:58.7885901Z             },
2026-06-20T11:21:58.7885992Z             {
2026-06-20T11:21:58.7886139Z               "path": "crates/spt-store/src/subnet.rs",
2026-06-20T11:21:58.7886255Z               "line": 96
2026-06-20T11:21:58.7886360Z             },
2026-06-20T11:21:58.7886462Z             {
2026-06-20T11:21:58.7886610Z               "path": "crates/spt-store/src/subnet.rs",
2026-06-20T11:21:58.7886719Z               "line": 269
2026-06-20T11:21:58.7886827Z             },
2026-06-20T11:21:58.7886937Z             {
2026-06-20T11:21:58.7887089Z               "path": "crates/spt-store/src/visibility.rs",
2026-06-20T11:21:58.7887204Z               "line": 148
2026-06-20T11:21:58.7887314Z             }
2026-06-20T11:21:58.7887414Z           ]
2026-06-20T11:21:58.7887523Z         },
2026-06-20T11:21:58.7887624Z         "int": {
2026-06-20T11:21:58.7887742Z           "complete": false,
2026-06-20T11:21:58.7887868Z           "evidence": []
2026-06-20T11:21:58.7887972Z         },
2026-06-20T11:21:58.7888081Z         "unit": {
2026-06-20T11:21:58.7888201Z           "complete": true,
2026-06-20T11:21:58.7888315Z           "evidence": [
2026-06-20T11:21:58.7888420Z             {
2026-06-20T11:21:58.7888574Z               "path": "crates/spt-net/src/net/registry.rs",
2026-06-20T11:21:58.7888697Z               "line": 1554
2026-06-20T11:21:58.7888802Z             },
2026-06-20T11:21:58.7888907Z             {
2026-06-20T11:21:58.7889132Z               "path": "crates/spt-net/src/net/registry.rs",
2026-06-20T11:21:58.7889259Z               "line": 1577
2026-06-20T11:21:58.7889368Z             },
2026-06-20T11:21:58.7889472Z             {
2026-06-20T11:21:58.7889630Z               "path": "crates/spt-net/src/net/registry.rs",
2026-06-20T11:21:58.7889744Z               "line": 1614
2026-06-20T11:21:58.7889859Z             },
2026-06-20T11:21:58.7889964Z             {
2026-06-20T11:21:58.7890117Z               "path": "crates/spt-store/src/subnet.rs",
2026-06-20T11:21:58.7890241Z               "line": 457
2026-06-20T11:21:58.7890350Z             },
2026-06-20T11:21:58.7890456Z             {
2026-06-20T11:21:58.7890707Z               "path": "crates/spt-store/src/visibility.rs",
2026-06-20T11:21:58.7890823Z               "line": 185
2026-06-20T11:21:58.7890927Z             },
2026-06-20T11:21:58.7891037Z             {
2026-06-20T11:21:58.7891194Z               "path": "crates/spt-store/src/visibility.rs",
2026-06-20T11:21:58.7891304Z               "line": 206
2026-06-20T11:21:58.7891415Z             },
2026-06-20T11:21:58.7891518Z             {
2026-06-20T11:21:58.7891674Z               "path": "crates/spt-store/src/visibility.rs",
2026-06-20T11:21:58.7891784Z               "line": 232
2026-06-20T11:21:58.7891892Z             }
2026-06-20T11:21:58.7892001Z           ]
2026-06-20T11:21:58.7892206Z         }
2026-06-20T11:21:58.7892311Z       }
2026-06-20T11:21:58.7892412Z     },
2026-06-20T11:21:58.7892516Z     {
2026-06-20T11:21:58.7892620Z       "id": "REQ-INST-13",
2026-06-20T11:21:58.7892854Z       "title": "Subnet-exclusive sync + per-endpoint subnet-membership list",
2026-06-20T11:21:58.7892965Z       "requiredStages": [
2026-06-20T11:21:58.7893079Z         "impl",
2026-06-20T11:21:58.7893193Z         "unit"
2026-06-20T11:21:58.7893294Z       ],
2026-06-20T11:21:58.7893408Z       "stages": {
2026-06-20T11:21:58.7893513Z         "doc": {
2026-06-20T11:21:58.7893633Z           "complete": false,
2026-06-20T11:21:58.7893742Z           "evidence": []
2026-06-20T11:21:58.7893837Z         },
2026-06-20T11:21:58.7893948Z         "impl": {
2026-06-20T11:21:58.7894066Z           "complete": true,
2026-06-20T11:21:58.7894181Z           "evidence": [
2026-06-20T11:21:58.7894287Z             {
2026-06-20T11:21:58.7894442Z               "path": "crates/spt-daemon/src/sync.rs",
2026-06-20T11:21:58.7894565Z               "line": 100
2026-06-20T11:21:58.7894670Z             },
2026-06-20T11:21:58.7894778Z             {
2026-06-20T11:21:58.7894921Z               "path": "crates/spt-store/src/visibility.rs",
2026-06-20T11:21:58.7895046Z               "line": 171
2026-06-20T11:21:58.7895149Z             }
2026-06-20T11:21:58.7895246Z           ]
2026-06-20T11:21:58.7895355Z         },
2026-06-20T11:21:58.7895464Z         "int": {
2026-06-20T11:21:58.7895594Z           "complete": false,
2026-06-20T11:21:58.7895699Z           "evidence": []
2026-06-20T11:21:58.7895817Z         },
2026-06-20T11:21:58.7895913Z         "unit": {
2026-06-20T11:21:58.7896037Z           "complete": true,
2026-06-20T11:21:58.7896151Z           "evidence": [
2026-06-20T11:21:58.7896252Z             {
2026-06-20T11:21:58.7896404Z               "path": "crates/spt-store/src/visibility.rs",
2026-06-20T11:21:58.7896520Z               "line": 261
2026-06-20T11:21:58.7896628Z             },
2026-06-20T11:21:58.7896733Z             {
2026-06-20T11:21:58.7896887Z               "path": "crates/spt-store/src/visibility.rs",
2026-06-20T11:21:58.7896990Z               "line": 279
2026-06-20T11:21:58.7897089Z             }
2026-06-20T11:21:58.7897194Z           ]
2026-06-20T11:21:58.7897302Z         }
2026-06-20T11:21:58.7897411Z       }
2026-06-20T11:21:58.7897511Z     },
2026-06-20T11:21:58.7897622Z     {
2026-06-20T11:21:58.7897745Z       "id": "REQ-INST-14",
2026-06-20T11:21:58.7898156Z       "title": "Resource advertisement (subnet resource registry): free-text blurb, both-authored, registry projection, visibility/whitelist-gated",
2026-06-20T11:21:58.7898280Z       "requiredStages": [
2026-06-20T11:21:58.7898389Z         "doc",
2026-06-20T11:21:58.7898499Z         "impl",
2026-06-20T11:21:58.7898604Z         "unit"
2026-06-20T11:21:58.7898713Z       ],
2026-06-20T11:21:58.7898819Z       "stages": {
2026-06-20T11:21:58.7898928Z         "doc": {
2026-06-20T11:21:58.7899115Z           "complete": true,
2026-06-20T11:21:58.7899222Z           "evidence": [
2026-06-20T11:21:58.7899328Z             {
2026-06-20T11:21:58.7899458Z               "path": "CONTEXT.md",
2026-06-20T11:21:58.7899566Z               "line": 588
2026-06-20T11:21:58.7899667Z             },
2026-06-20T11:21:58.7899773Z             {
2026-06-20T11:21:58.7899899Z               "path": "docs/STORAGE.md",
2026-06-20T11:21:58.7900105Z               "line": 49
2026-06-20T11:21:58.7900209Z             }
2026-06-20T11:21:58.7900314Z           ]
2026-06-20T11:21:58.7900420Z         },
2026-06-20T11:21:58.7900524Z         "impl": {
2026-06-20T11:21:58.7900633Z           "complete": true,
2026-06-20T11:21:58.7900744Z           "evidence": [
2026-06-20T11:21:58.7900843Z             {
2026-06-20T11:21:58.7901006Z               "path": "crates/spt-daemon/src/registryhost.rs",
2026-06-20T11:21:58.7901111Z               "line": 410
2026-06-20T11:21:58.7901224Z             },
2026-06-20T11:21:58.7901355Z             {
2026-06-20T11:21:58.7901506Z               "path": "crates/spt-net/src/net/registry.rs",
2026-06-20T11:21:58.7901816Z               "line": 367
2026-06-20T11:21:58.7901926Z             },
2026-06-20T11:21:58.7902032Z             {
2026-06-20T11:21:58.7902173Z               "path": "crates/spt-store/src/info.rs",
2026-06-20T11:21:58.7902287Z               "line": 293
2026-06-20T11:21:58.7902395Z             },
2026-06-20T11:21:58.7902504Z             {
2026-06-20T11:21:58.7909197Z               "path": "crates/spt/src/cli.rs",
2026-06-20T11:21:58.7909336Z               "line": 1577
2026-06-20T11:21:58.7909483Z             }
2026-06-20T11:21:58.7909593Z           ]
2026-06-20T11:21:58.7909703Z         },
2026-06-20T11:21:58.7909817Z         "int": {
2026-06-20T11:21:58.7909937Z           "complete": false,
2026-06-20T11:21:58.7910056Z           "evidence": []
2026-06-20T11:21:58.7910160Z         },
2026-06-20T11:21:58.7910276Z         "unit": {
2026-06-20T11:21:58.7910385Z           "complete": true,
2026-06-20T11:21:58.7910498Z           "evidence": [
2026-06-20T11:21:58.7910598Z             {
2026-06-20T11:21:58.7910788Z               "path": "crates/spt-daemon/src/registryhost.rs",
2026-06-20T11:21:58.7910903Z               "line": 1163
2026-06-20T11:21:58.7911008Z             },
2026-06-20T11:21:58.7911107Z             {
2026-06-20T11:21:58.7911266Z               "path": "crates/spt-net/src/net/registry.rs",
2026-06-20T11:21:58.7911381Z               "line": 944
2026-06-20T11:21:58.7911489Z             },
2026-06-20T11:21:58.7911595Z             {
2026-06-20T11:21:58.7911747Z               "path": "crates/spt-net/src/net/registry.rs",
2026-06-20T11:21:58.7911857Z               "line": 1205
2026-06-20T11:21:58.7911962Z             },
2026-06-20T11:21:58.7912062Z             {
2026-06-20T11:21:58.7912210Z               "path": "crates/spt-store/src/info.rs",
2026-06-20T11:21:58.7912323Z               "line": 659
2026-06-20T11:21:58.7912428Z             },
2026-06-20T11:21:58.7912530Z             {
2026-06-20T11:21:58.7912657Z               "path": "crates/spt/src/cli.rs",
2026-06-20T11:21:58.7912785Z               "line": 8070
2026-06-20T11:21:58.7912890Z             }
2026-06-20T11:21:58.7912993Z           ]
2026-06-20T11:21:58.7913102Z         }
2026-06-20T11:21:58.7913203Z       }
2026-06-20T11:21:58.7913308Z     },
2026-06-20T11:21:58.7913407Z     {
2026-06-20T11:21:58.7913532Z       "id": "REQ-INST-15",
2026-06-20T11:21:58.7914323Z       "title": "Immutable home subnet (assigned at creation: auto-if-one/ask-if-many) + spt fork (cross-subnet clone to a new identity, copy-then-diverge, not re-home); adapter chosen at creation from registered hostable adapters, changed only via launch/resume-under-new (ADR-0010)",
2026-06-20T11:21:58.7914453Z       "requiredStages": [
2026-06-20T11:21:58.7914561Z         "doc",
2026-06-20T11:21:58.7914671Z         "impl",
2026-06-20T11:21:58.7914768Z         "unit"
2026-06-20T11:21:58.7914871Z       ],
2026-06-20T11:21:58.7914986Z       "stages": {
2026-06-20T11:21:58.7915097Z         "doc": {
2026-06-20T11:21:58.7915209Z           "complete": true,
2026-06-20T11:21:58.7915329Z           "evidence": [
2026-06-20T11:21:58.7915431Z             {
2026-06-20T11:21:58.7915642Z               "path": "docs/adr/0010-immutable-home-subnet-fork-not-rehome.md",
2026-06-20T11:21:58.7915753Z               "line": 3
2026-06-20T11:21:58.7915860Z             }
2026-06-20T11:21:58.7915969Z           ]
2026-06-20T11:21:58.7916246Z         },
2026-06-20T11:21:58.7916366Z         "impl": {
2026-06-20T11:21:58.7916485Z           "complete": true,
2026-06-20T11:21:58.7916603Z           "evidence": [
2026-06-20T11:21:58.7916705Z             {
2026-06-20T11:21:58.7916885Z               "path": "crates/spt-daemon/src/registryhost.rs",
2026-06-20T11:21:58.7917005Z               "line": 353
2026-06-20T11:21:58.7917104Z             },
2026-06-20T11:21:58.7917205Z             {
2026-06-20T11:21:58.7917344Z               "path": "crates/spt-msg/src/ready.rs",
2026-06-20T11:21:58.7917453Z               "line": 60
2026-06-20T11:21:58.7917557Z             },
2026-06-20T11:21:58.7917649Z             {
2026-06-20T11:21:58.7917935Z               "path": "crates/spt-store/src/contextstore.rs",
2026-06-20T11:21:58.7918049Z               "line": 368
2026-06-20T11:21:58.7918162Z             },
2026-06-20T11:21:58.7918267Z             {
2026-06-20T11:21:58.7918427Z               "path": "crates/spt-store/src/contextstore.rs",
2026-06-20T11:21:58.7918545Z               "line": 417
2026-06-20T11:21:58.7918651Z             },
2026-06-20T11:21:58.7918756Z             {
2026-06-20T11:21:58.7918898Z               "path": "crates/spt-store/src/home.rs",
2026-06-20T11:21:58.7919099Z               "line": 19
2026-06-20T11:21:58.7919208Z             },
2026-06-20T11:21:58.7919319Z             {
2026-06-20T11:21:58.7919475Z               "path": "crates/spt-store/src/home.rs",
2026-06-20T11:21:58.7919581Z               "line": 70
2026-06-20T11:21:58.7919681Z             },
2026-06-20T11:21:58.7919776Z             {
2026-06-20T11:21:58.7919920Z               "path": "crates/spt-store/src/home.rs",
2026-06-20T11:21:58.7920029Z               "line": 96
2026-06-20T11:21:58.7920134Z             },
2026-06-20T11:21:58.7920239Z             {
2026-06-20T11:21:58.7920372Z               "path": "crates/spt-store/src/home.rs",
2026-06-20T11:21:58.7920487Z               "line": 121
2026-06-20T11:21:58.7920592Z             },
2026-06-20T11:21:58.7920696Z             {
2026-06-20T11:21:58.7920826Z               "path": "crates/spt-store/src/home.rs",
2026-06-20T11:21:58.7920935Z               "line": 172
2026-06-20T11:21:58.7924359Z             },
2026-06-20T11:21:58.7924478Z             {
2026-06-20T11:21:58.7924645Z               "path": "crates/spt/src/api/startup.rs",
2026-06-20T11:21:58.7924755Z               "line": 178
2026-06-20T11:21:58.7924859Z             },
2026-06-20T11:21:58.7924954Z             {
2026-06-20T11:21:58.7925102Z               "path": "crates/spt/src/cli.rs",
2026-06-20T11:21:58.7925212Z               "line": 1469
2026-06-20T11:21:58.7925313Z             }
2026-06-20T11:21:58.7925422Z           ]
2026-06-20T11:21:58.7925536Z         },
2026-06-20T11:21:58.7925642Z         "int": {
2026-06-20T11:21:58.7925760Z           "complete": false,
2026-06-20T11:21:58.7925870Z           "evidence": []
2026-06-20T11:21:58.7925981Z         },
2026-06-20T11:21:58.7926080Z         "unit": {
2026-06-20T11:21:58.7926202Z           "complete": true,
2026-06-20T11:21:58.7926322Z           "evidence": [
2026-06-20T11:21:58.7926429Z             {
2026-06-20T11:21:58.7926592Z               "path": "crates/spt-store/src/contextstore.rs",
2026-06-20T11:21:58.7926707Z               "line": 577
2026-06-20T11:21:58.7926806Z             },
2026-06-20T11:21:58.7926906Z             {
2026-06-20T11:21:58.7927069Z               "path": "crates/spt-store/src/contextstore.rs",
2026-06-20T11:21:58.7927177Z               "line": 638
2026-06-20T11:21:58.7927289Z             },
2026-06-20T11:21:58.7927393Z             {
2026-06-20T11:21:58.7927546Z               "path": "crates/spt-store/src/home.rs",
2026-06-20T11:21:58.7927650Z               "line": 213
2026-06-20T11:21:58.7927760Z             },
2026-06-20T11:21:58.7927865Z             {
2026-06-20T11:21:58.7927998Z               "path": "crates/spt-store/src/home.rs",
2026-06-20T11:21:58.7928118Z               "line": 249
2026-06-20T11:21:58.7928219Z             },
2026-06-20T11:21:58.7928332Z             {
2026-06-20T11:21:58.7928614Z               "path": "crates/spt-store/src/home.rs",
2026-06-20T11:21:58.7928718Z               "line": 262
2026-06-20T11:21:58.7928841Z             },
2026-06-20T11:21:58.7929035Z             {
2026-06-20T11:21:58.7929183Z               "path": "crates/spt-store/src/home.rs",
2026-06-20T11:21:58.7929297Z               "line": 338
2026-06-20T11:21:58.7929406Z             },
2026-06-20T11:21:58.7929517Z             {
2026-06-20T11:21:58.7929659Z               "path": "crates/spt/src/api/startup.rs",
2026-06-20T11:21:58.7929759Z               "line": 690
2026-06-20T11:21:58.7929860Z             },
2026-06-20T11:21:58.7929969Z             {
2026-06-20T11:21:58.7930093Z               "path": "crates/spt/src/cli.rs",
2026-06-20T11:21:58.7930317Z               "line": 8007
2026-06-20T11:21:58.7930427Z             },
2026-06-20T11:21:58.7930532Z             {
2026-06-20T11:21:58.7930661Z               "path": "crates/spt/src/cli.rs",
2026-06-20T11:21:58.7930767Z               "line": 9837
2026-06-20T11:21:58.7930880Z             }
2026-06-20T11:21:58.7930980Z           ]
2026-06-20T11:21:58.7931081Z         }
2026-06-20T11:21:58.7931185Z       }
2026-06-20T11:21:58.7931285Z     },
2026-06-20T11:21:58.7931386Z     {
2026-06-20T11:21:58.7931500Z       "id": "REQ-INST-2",
2026-06-20T11:21:58.7931660Z       "title": "Per-node files, synced Psyche mind",
2026-06-20T11:21:58.7931781Z       "requiredStages": [
2026-06-20T11:21:58.7931890Z         "impl",
2026-06-20T11:21:58.7931995Z         "unit"
2026-06-20T11:21:58.7932100Z       ],
2026-06-20T11:21:58.7932200Z       "stages": {
2026-06-20T11:21:58.7932299Z         "doc": {
2026-06-20T11:21:58.7932425Z           "complete": false,
2026-06-20T11:21:58.7932538Z           "evidence": []
2026-06-20T11:21:58.7932648Z         },
2026-06-20T11:21:58.7932763Z         "impl": {
2026-06-20T11:21:58.7932877Z           "complete": true,
2026-06-20T11:21:58.7932997Z           "evidence": [
2026-06-20T11:21:58.7933092Z             {
2026-06-20T11:21:58.7933263Z               "path": "crates/spt-daemon/src/lifecycle.rs",
2026-06-20T11:21:58.7933374Z               "line": 108
2026-06-20T11:21:58.7933481Z             },
2026-06-20T11:21:58.7933592Z             {
2026-06-20T11:21:58.7933741Z               "path": "crates/spt-live/src/ingest.rs",
2026-06-20T11:21:58.7933858Z               "line": 28
2026-06-20T11:21:58.7933953Z             },
2026-06-20T11:21:58.7934058Z             {
2026-06-20T11:21:58.7934199Z               "path": "crates/spt-live/src/ingest.rs",
2026-06-20T11:21:58.7934313Z               "line": 74
2026-06-20T11:21:58.7934428Z             },
2026-06-20T11:21:58.7934528Z             {
2026-06-20T11:21:58.7934676Z               "path": "crates/spt-live/src/ingest.rs",
2026-06-20T11:21:58.7934794Z               "line": 96
2026-06-20T11:21:58.7934900Z             },
2026-06-20T11:21:58.7935005Z             {
2026-06-20T11:21:58.7935147Z               "path": "crates/spt-live/src/resume.rs",
2026-06-20T11:21:58.7935268Z               "line": 86
2026-06-20T11:21:58.7935367Z             },
2026-06-20T11:21:58.7935467Z             {
2026-06-20T11:21:58.7935616Z               "path": "crates/spt-live/src/signoff.rs",
2026-06-20T11:21:58.7935735Z               "line": 118
2026-06-20T11:21:58.7935839Z             }
2026-06-20T11:21:58.7935945Z           ]
2026-06-20T11:21:58.7936054Z         },
2026-06-20T11:21:58.7936159Z         "int": {
2026-06-20T11:21:58.7936284Z           "complete": false,
2026-06-20T11:21:58.7936392Z           "evidence": []
2026-06-20T11:21:58.7936498Z         },
2026-06-20T11:21:58.7936608Z         "unit": {
2026-06-20T11:21:58.7936711Z           "complete": true,
2026-06-20T11:21:58.7936830Z           "evidence": [
2026-06-20T11:21:58.7936939Z             {
2026-06-20T11:21:58.7937085Z               "path": "crates/spt-live/src/ingest.rs",
2026-06-20T11:21:58.7937195Z               "line": 250
2026-06-20T11:21:58.7937305Z             },
2026-06-20T11:21:58.7937409Z             {
2026-06-20T11:21:58.7937539Z               "path": "crates/spt-live/src/resume.rs",
2026-06-20T11:21:58.7937752Z               "line": 280
2026-06-20T11:21:58.7937858Z             }
2026-06-20T11:21:58.7937967Z           ]
2026-06-20T11:21:58.7938072Z         }
2026-06-20T11:21:58.7938173Z       }
2026-06-20T11:21:58.7938282Z     },
2026-06-20T11:21:58.7938382Z     {
2026-06-20T11:21:58.7938502Z       "id": "REQ-INST-3",
2026-06-20T11:21:58.7938678Z       "title": "Dormant (warm) / suspended (cold) resting states",
2026-06-20T11:21:58.7938798Z       "requiredStages": [
2026-06-20T11:21:58.7938906Z         "doc",
2026-06-20T11:21:58.7939084Z         "impl",
2026-06-20T11:21:58.7939193Z         "unit"
2026-06-20T11:21:58.7939292Z       ],
2026-06-20T11:21:58.7939552Z       "stages": {
2026-06-20T11:21:58.7939656Z         "doc": {
2026-06-20T11:21:58.7939776Z           "complete": true,
2026-06-20T11:21:58.7939885Z           "evidence": [
2026-06-20T11:21:58.7939980Z             {
2026-06-20T11:21:58.7940115Z               "path": "docs/DORMANCY-BUDGET.md",
2026-06-20T11:21:58.7940214Z               "line": 3
2026-06-20T11:21:58.7940319Z             }
2026-06-20T11:21:58.7940415Z           ]
2026-06-20T11:21:58.7940520Z         },
2026-06-20T11:21:58.7940624Z         "impl": {
2026-06-20T11:21:58.7940739Z           "complete": true,
2026-06-20T11:21:58.7940844Z           "evidence": [
2026-06-20T11:21:58.7940949Z             {
2026-06-20T11:21:58.7941106Z               "path": "crates/spt-daemon/src/attach.rs",
2026-06-20T11:21:58.7941211Z               "line": 59
2026-06-20T11:21:58.7941317Z             },
2026-06-20T11:21:58.7941411Z             {
2026-06-20T11:21:58.7941568Z               "path": "crates/spt-daemon/src/dispatch.rs",
2026-06-20T11:21:58.7941684Z               "line": 480
2026-06-20T11:21:58.7941783Z             },
2026-06-20T11:21:58.7941879Z             {
2026-06-20T11:21:58.7942023Z               "path": "crates/spt-daemon/src/lifecycle.rs",
2026-06-20T11:21:58.7942135Z               "line": 254
2026-06-20T11:21:58.7942240Z             },
2026-06-20T11:21:58.7942346Z             {
2026-06-20T11:21:58.7942506Z               "path": "crates/spt-daemon/src/lifecycle.rs",
2026-06-20T11:21:58.7942612Z               "line": 384
2026-06-20T11:21:58.7942722Z             },
2026-06-20T11:21:58.7942826Z             {
2026-06-20T11:21:58.7942970Z               "path": "crates/spt-daemon/src/lifecycle.rs",
2026-06-20T11:21:58.7943080Z               "line": 418
2026-06-20T11:21:58.7943189Z             },
2026-06-20T11:21:58.7943294Z             {
2026-06-20T11:21:58.7943441Z               "path": "crates/spt-daemon/src/pump/sync.rs",
2026-06-20T11:21:58.7943567Z               "line": 74
2026-06-20T11:21:58.7943671Z             },
2026-06-20T11:21:58.7943780Z             {
2026-06-20T11:21:58.7943938Z               "path": "crates/spt-daemon/src/registryhost.rs",
2026-06-20T11:21:58.7944046Z               "line": 234
2026-06-20T11:21:58.7944152Z             },
2026-06-20T11:21:58.7944253Z             {
2026-06-20T11:21:58.7944404Z               "path": "crates/spt-daemon/src/registryhost.rs",
2026-06-20T11:21:58.7944513Z               "line": 396
2026-06-20T11:21:58.7944632Z             },
2026-06-20T11:21:58.7944763Z             {
2026-06-20T11:21:58.7944917Z               "path": "crates/spt-daemon/src/resting.rs",
2026-06-20T11:21:58.7945021Z               "line": 45
2026-06-20T11:21:58.7945126Z             },
2026-06-20T11:21:58.7945223Z             {
2026-06-20T11:21:58.7945355Z               "path": "crates/spt-daemon/src/resting.rs",
2026-06-20T11:21:58.7945460Z               "line": 114
2026-06-20T11:21:58.7945556Z             },
2026-06-20T11:21:58.7945660Z             {
2026-06-20T11:21:58.7945800Z               "path": "crates/spt-daemon/src/resting.rs",
2026-06-20T11:21:58.7945908Z               "line": 152
2026-06-20T11:21:58.7946013Z             },
2026-06-20T11:21:58.7946109Z             {
2026-06-20T11:21:58.7946251Z               "path": "crates/spt-daemon/src/resting.rs",
2026-06-20T11:21:58.7946361Z               "line": 168
2026-06-20T11:21:58.7946462Z             },
2026-06-20T11:21:58.7946680Z             {
2026-06-20T11:21:58.7946825Z               "path": "crates/spt-daemon/src/resting.rs",
2026-06-20T11:21:58.7946938Z               "line": 178
2026-06-20T11:21:58.7947039Z             },
2026-06-20T11:21:58.7947140Z             {
2026-06-20T11:21:58.7947280Z               "path": "crates/spt-daemon/src/resting.rs",
2026-06-20T11:21:58.7947390Z               "line": 210
2026-06-20T11:21:58.7947490Z             },
2026-06-20T11:21:58.7947593Z             {
2026-06-20T11:21:58.7947731Z               "path": "crates/spt-daemon/src/resting.rs",
2026-06-20T11:21:58.7947837Z               "line": 287
2026-06-20T11:21:58.7947945Z             },
2026-06-20T11:21:58.7948136Z             {
2026-06-20T11:21:58.7948269Z               "path": "crates/spt-daemon/src/resting.rs",
2026-06-20T11:21:58.7948371Z               "line": 311
2026-06-20T11:21:58.7948475Z             },
2026-06-20T11:21:58.7948574Z             {
2026-06-20T11:21:58.7948709Z               "path": "crates/spt-daemon/src/resting.rs",
2026-06-20T11:21:58.7948808Z               "line": 389
2026-06-20T11:21:58.7948918Z             },
2026-06-20T11:21:58.7949095Z             {
2026-06-20T11:21:58.7949238Z               "path": "crates/spt-daemon/src/resting.rs",
2026-06-20T11:21:58.7949344Z               "line": 438
2026-06-20T11:21:58.7949456Z             },
2026-06-20T11:21:58.7949553Z             {
2026-06-20T11:21:58.7949702Z               "path": "crates/spt-daemon/tests/budget.rs",
2026-06-20T11:21:58.7949809Z               "line": 37
2026-06-20T11:21:58.7949908Z             },
2026-06-20T11:21:58.7950014Z             {
2026-06-20T11:21:58.7950145Z               "path": "crates/spt-net/src/net/registry.rs",
2026-06-20T11:21:58.7950260Z               "line": 62
2026-06-20T11:21:58.7950356Z             },
2026-06-20T11:21:58.7950460Z             {
2026-06-20T11:21:58.7950584Z               "path": "crates/spt-store/src/info.rs",
2026-06-20T11:21:58.7950685Z               "line": 279
2026-06-20T11:21:58.7950793Z             },
2026-06-20T11:21:58.7950894Z             {
2026-06-20T11:21:58.7951028Z               "path": "crates/spt/src/cli.rs",
2026-06-20T11:21:58.7951132Z               "line": 1848
2026-06-20T11:21:58.7951238Z             }
2026-06-20T11:21:58.7951342Z           ]
2026-06-20T11:21:58.7951446Z         },
2026-06-20T11:21:58.7951552Z         "int": {
2026-06-20T11:21:58.7951666Z           "complete": false,
2026-06-20T11:21:58.7951781Z           "evidence": []
2026-06-20T11:21:58.7951867Z         },
2026-06-20T11:21:58.7951967Z         "unit": {
2026-06-20T11:21:58.7952072Z           "complete": true,
2026-06-20T11:21:58.7952177Z           "evidence": [
2026-06-20T11:21:58.7952282Z             {
2026-06-20T11:21:58.7952420Z               "path": "crates/spt-daemon/src/config.rs",
2026-06-20T11:21:58.7952526Z               "line": 360
2026-06-20T11:21:58.7952629Z             },
2026-06-20T11:21:58.7952729Z             {
2026-06-20T11:21:58.7952882Z               "path": "crates/spt-daemon/src/lifecycle.rs",
2026-06-20T11:21:58.7952986Z               "line": 837
2026-06-20T11:21:58.7953090Z             },
2026-06-20T11:21:58.7953196Z             {
2026-06-20T11:21:58.7953343Z               "path": "crates/spt-daemon/src/lifecycle.rs",
2026-06-20T11:21:58.7953449Z               "line": 894
2026-06-20T11:21:58.7953559Z             },
2026-06-20T11:21:58.7953663Z             {
2026-06-20T11:21:58.7953807Z               "path": "crates/spt-daemon/src/pump/mod.rs",
2026-06-20T11:21:58.7953912Z               "line": 889
2026-06-20T11:21:58.7954016Z             },
2026-06-20T11:21:58.7954117Z             {
2026-06-20T11:21:58.7954259Z               "path": "crates/spt-daemon/src/pump/mod.rs",
2026-06-20T11:21:58.7954364Z               "line": 1014
2026-06-20T11:21:58.7954475Z             },
2026-06-20T11:21:58.7954574Z             {
2026-06-20T11:21:58.7954727Z               "path": "crates/spt-daemon/src/registryhost.rs",
2026-06-20T11:21:58.7954832Z               "line": 1264
2026-06-20T11:21:58.7954945Z             },
2026-06-20T11:21:58.7955187Z             {
2026-06-20T11:21:58.7955333Z               "path": "crates/spt-daemon/src/registryhost.rs",
2026-06-20T11:21:58.7955443Z               "line": 1405
2026-06-20T11:21:58.7955543Z             },
2026-06-20T11:21:58.7955648Z             {
2026-06-20T11:21:58.7955778Z               "path": "crates/spt-daemon/src/resting.rs",
2026-06-20T11:21:58.7955887Z               "line": 449
2026-06-20T11:21:58.7955991Z             },
2026-06-20T11:21:58.7956092Z             {
2026-06-20T11:21:58.7956235Z               "path": "crates/spt-daemon/src/resting.rs",
2026-06-20T11:21:58.7956340Z               "line": 485
2026-06-20T11:21:58.7956445Z             },
2026-06-20T11:21:58.7956640Z             {
2026-06-20T11:21:58.7956783Z               "path": "crates/spt-daemon/src/resting.rs",
2026-06-20T11:21:58.7956897Z               "line": 540
2026-06-20T11:21:58.7956999Z             },
2026-06-20T11:21:58.7957098Z             {
2026-06-20T11:21:58.7957235Z               "path": "crates/spt-daemon/src/resting.rs",
2026-06-20T11:21:58.7957337Z               "line": 697
2026-06-20T11:21:58.7957441Z             },
2026-06-20T11:21:58.7957546Z             {
2026-06-20T11:21:58.7957690Z               "path": "crates/spt-daemon/src/resting.rs",
2026-06-20T11:21:58.7957798Z               "line": 931
2026-06-20T11:21:58.7957907Z             },
2026-06-20T11:21:58.7958007Z             {
2026-06-20T11:21:58.7958153Z               "path": "crates/spt-daemon/src/resting.rs",
2026-06-20T11:21:58.7958248Z               "line": 945
2026-06-20T11:21:58.7958345Z             },
2026-06-20T11:21:58.7958449Z             {
2026-06-20T11:21:58.7958587Z               "path": "crates/spt-net/src/net/registry.rs",
2026-06-20T11:21:58.7958706Z               "line": 1290
2026-06-20T11:21:58.7958810Z             },
2026-06-20T11:21:58.7958912Z             {
2026-06-20T11:21:58.7959130Z               "path": "crates/spt-store/src/info.rs",
2026-06-20T11:21:58.7959241Z               "line": 609
2026-06-20T11:21:58.7959345Z             },
2026-06-20T11:21:58.7959459Z             {
2026-06-20T11:21:58.7959584Z               "path": "crates/spt/src/cli.rs",
2026-06-20T11:21:58.7959693Z               "line": 8031
2026-06-20T11:21:58.7959798Z             }
2026-06-20T11:21:58.7959899Z           ]
2026-06-20T11:21:58.7960003Z         }
2026-06-20T11:21:58.7960108Z       }
2026-06-20T11:21:58.7960209Z     },
2026-06-20T11:21:58.7960304Z     {
2026-06-20T11:21:58.7960412Z       "id": "REQ-INST-4",
2026-06-20T11:21:58.7960621Z       "title": "active to dormant/suspended fires a transition echo commune",
2026-06-20T11:21:58.7960738Z       "requiredStages": [
2026-06-20T11:21:58.7960848Z         "impl",
2026-06-20T11:21:58.7960955Z         "unit"
2026-06-20T11:21:58.7961053Z       ],
2026-06-20T11:21:58.7961159Z       "stages": {
2026-06-20T11:21:58.7961259Z         "doc": {
2026-06-20T11:21:58.7961368Z           "complete": false,
2026-06-20T11:21:58.7961473Z           "evidence": []
2026-06-20T11:21:58.7961578Z         },
2026-06-20T11:21:58.7961692Z         "impl": {
2026-06-20T11:21:58.7961803Z           "complete": true,
2026-06-20T11:21:58.7961916Z           "evidence": [
2026-06-20T11:21:58.7962021Z             {
2026-06-20T11:21:58.7962175Z               "path": "crates/spt-daemon/src/lifecycle.rs",
2026-06-20T11:21:58.7962284Z               "line": 385
2026-06-20T11:21:58.7962384Z             },
2026-06-20T11:21:58.7962485Z             {
2026-06-20T11:21:58.7962622Z               "path": "crates/spt-daemon/src/resting.rs",
2026-06-20T11:21:58.7962723Z               "line": 202
2026-06-20T11:21:58.7962824Z             },
2026-06-20T11:21:58.7962932Z             {
2026-06-20T11:21:58.7963076Z               "path": "crates/spt-daemon/src/resting.rs",
2026-06-20T11:21:58.7963185Z               "line": 234
2026-06-20T11:21:58.7963289Z             },
2026-06-20T11:21:58.7963393Z             {
2026-06-20T11:21:58.7963523Z               "path": "crates/spt-daemon/src/resting.rs",
2026-06-20T11:21:58.7963632Z               "line": 274
2026-06-20T11:21:58.7963838Z             }
2026-06-20T11:21:58.7963947Z           ]
2026-06-20T11:21:58.7964043Z         },
2026-06-20T11:21:58.7964133Z         "int": {
2026-06-20T11:21:58.7964242Z           "complete": false,
2026-06-20T11:21:58.7964347Z           "evidence": []
2026-06-20T11:21:58.7964452Z         },
2026-06-20T11:21:58.7964561Z         "unit": {
2026-06-20T11:21:58.7964677Z           "complete": true,
2026-06-20T11:21:58.7964781Z           "evidence": [
2026-06-20T11:21:58.7964876Z             {
2026-06-20T11:21:58.7965016Z               "path": "crates/spt-daemon/src/lifecycle.rs",
2026-06-20T11:21:58.7965129Z               "line": 889
2026-06-20T11:21:58.7965326Z             },
2026-06-20T11:21:58.7965434Z             {
2026-06-20T11:21:58.7965572Z               "path": "crates/spt-daemon/src/resting.rs",
2026-06-20T11:21:58.7965672Z               "line": 561
2026-06-20T11:21:58.7965784Z             },
2026-06-20T11:21:58.7965879Z             {
2026-06-20T11:21:58.7966013Z               "path": "crates/spt-daemon/src/resting.rs",
2026-06-20T11:21:58.7966123Z               "line": 668
2026-06-20T11:21:58.7966227Z             },
2026-06-20T11:21:58.7966338Z             {
2026-06-20T11:21:58.7966466Z               "path": "crates/spt-daemon/src/resting.rs",
2026-06-20T11:21:58.7966580Z               "line": 750
2026-06-20T11:21:58.7966676Z             }
2026-06-20T11:21:58.7966780Z           ]
2026-06-20T11:21:58.7966881Z         }
2026-06-20T11:21:58.7966986Z       }
2026-06-20T11:21:58.7967090Z     },
2026-06-20T11:21:58.7967191Z     {
2026-06-20T11:21:58.7967306Z       "id": "REQ-INST-5",
2026-06-20T11:21:58.7967505Z       "title": "Two-tier context sync (live to all, project to same-project)",
2026-06-20T11:21:58.7967621Z       "requiredStages": [
2026-06-20T11:21:58.7967715Z         "impl",
2026-06-20T11:21:58.7967820Z         "unit",
2026-06-20T11:21:58.7967926Z         "int"
2026-06-20T11:21:58.7968030Z       ],
2026-06-20T11:21:58.7968140Z       "stages": {
2026-06-20T11:21:58.7968245Z         "doc": {
2026-06-20T11:21:58.7968354Z           "complete": false,
2026-06-20T11:21:58.7968462Z           "evidence": []
2026-06-20T11:21:58.7968567Z         },
2026-06-20T11:21:58.7968670Z         "impl": {
2026-06-20T11:21:58.7968775Z           "complete": true,
2026-06-20T11:21:58.7968880Z           "evidence": [
2026-06-20T11:21:58.7969046Z             {
2026-06-20T11:21:58.7969195Z               "path": "crates/spt-daemon/src/pump/sync.rs",
2026-06-20T11:21:58.7969291Z               "line": 85
2026-06-20T11:21:58.7969399Z             },
2026-06-20T11:21:58.7969510Z             {
2026-06-20T11:21:58.7969653Z               "path": "crates/spt-daemon/src/sync.rs",
2026-06-20T11:21:58.7969753Z               "line": 68
2026-06-20T11:21:58.7969858Z             },
2026-06-20T11:21:58.7969963Z             {
2026-06-20T11:21:58.7970086Z               "path": "crates/spt-daemon/src/sync.rs",
2026-06-20T11:21:58.7970202Z               "line": 99
2026-06-20T11:21:58.7970306Z             },
2026-06-20T11:21:58.7970406Z             {
2026-06-20T11:21:58.7970540Z               "path": "crates/spt-daemon/src/sync.rs",
2026-06-20T11:21:58.7970644Z               "line": 183
2026-06-20T11:21:58.7970751Z             },
2026-06-20T11:21:58.7970850Z             {
2026-06-20T11:21:58.7970977Z               "path": "crates/spt-daemon/src/sync.rs",
2026-06-20T11:21:58.7971087Z               "line": 314
2026-06-20T11:21:58.7971186Z             }
2026-06-20T11:21:58.7971294Z           ]
2026-06-20T11:21:58.7971395Z         },
2026-06-20T11:21:58.7971495Z         "int": {
2026-06-20T11:21:58.7971599Z           "complete": true,
2026-06-20T11:21:58.7971709Z           "evidence": [
2026-06-20T11:21:58.7971814Z             {
2026-06-20T11:21:58.7971966Z               "path": "crates/spt-daemon/tests/dispatch.rs",
2026-06-20T11:21:58.7972077Z               "line": 156
2026-06-20T11:21:58.7972177Z             },
2026-06-20T11:21:58.7972281Z             {
2026-06-20T11:21:58.7972416Z               "path": "crates/spt-daemon/tests/pump.rs",
2026-06-20T11:21:58.7972629Z               "line": 145
2026-06-20T11:21:58.7972735Z             },
2026-06-20T11:21:58.7972835Z             {
2026-06-20T11:21:58.7972978Z               "path": "crates/spt-daemon/tests/twohost.rs",
2026-06-20T11:21:58.7973083Z               "line": 707
2026-06-20T11:21:58.7973187Z             },
2026-06-20T11:21:58.7973288Z             {
2026-06-20T11:21:58.7973426Z               "path": "crates/spt-daemon/tests/twohost.rs",
2026-06-20T11:21:58.7973540Z               "line": 1069
2026-06-20T11:21:58.7973637Z             }
2026-06-20T11:21:58.7973745Z           ]
2026-06-20T11:21:58.7973844Z         },
2026-06-20T11:21:58.7973949Z         "unit": {
2026-06-20T11:21:58.7974144Z           "complete": true,
2026-06-20T11:21:58.7974259Z           "evidence": [
2026-06-20T11:21:58.7974364Z             {
2026-06-20T11:21:58.7974487Z               "path": "crates/spt-daemon/src/sync.rs",
2026-06-20T11:21:58.7974598Z               "line": 552
2026-06-20T11:21:58.7974698Z             },
2026-06-20T11:21:58.7974797Z             {
2026-06-20T11:21:58.7974922Z               "path": "crates/spt-daemon/src/sync.rs",
2026-06-20T11:21:58.7975017Z               "line": 595
2026-06-20T11:21:58.7975126Z             },
2026-06-20T11:21:58.7975228Z             {
2026-06-20T11:21:58.7975355Z               "path": "crates/spt-daemon/tests/sync.rs",
2026-06-20T11:21:58.7975460Z               "line": 219
2026-06-20T11:21:58.7975567Z             }
2026-06-20T11:21:58.7975675Z           ]
2026-06-20T11:21:58.7975780Z         }
2026-06-20T11:21:58.7975886Z       }
2026-06-20T11:21:58.7975989Z     },
2026-06-20T11:21:58.7976089Z     {
2026-06-20T11:21:58.7976189Z       "id": "REQ-INST-6",
2026-06-20T11:21:58.7976406Z       "title": "Deferred messages not delivered to dormant/suspended instances",
2026-06-20T11:21:58.7976525Z       "requiredStages": [
2026-06-20T11:21:58.7976626Z         "impl",
2026-06-20T11:21:58.7976730Z         "unit",
2026-06-20T11:21:58.7976835Z         "int"
2026-06-20T11:21:58.7976945Z       ],
2026-06-20T11:21:58.7977054Z       "stages": {
2026-06-20T11:21:58.7977160Z         "doc": {
2026-06-20T11:21:58.7977274Z           "complete": true,
2026-06-20T11:21:58.7977379Z           "evidence": [
2026-06-20T11:21:58.7977490Z             {
2026-06-20T11:21:58.7977599Z               "path": "docs/DEFERRED.md",
2026-06-20T11:21:58.7977712Z               "line": 13
2026-06-20T11:21:58.7977814Z             }
2026-06-20T11:21:58.7977922Z           ]
2026-06-20T11:21:58.7978037Z         },
2026-06-20T11:21:58.7978148Z         "impl": {
2026-06-20T11:21:58.7978256Z           "complete": true,
2026-06-20T11:21:58.7978361Z           "evidence": [
2026-06-20T11:21:58.7978467Z             {
2026-06-20T11:21:58.7978613Z               "path": "crates/spt-daemon/src/dispatch.rs",
2026-06-20T11:21:58.7978725Z               "line": 391
2026-06-20T11:21:58.7978834Z             },
2026-06-20T11:21:58.7978937Z             {
2026-06-20T11:21:58.7979156Z               "path": "crates/spt-daemon/src/resthost.rs",
2026-06-20T11:21:58.7979259Z               "line": 27
2026-06-20T11:21:58.7979359Z             },
2026-06-20T11:21:58.7979470Z             {
2026-06-20T11:21:58.7979607Z               "path": "crates/spt-daemon/src/resthost.rs",
2026-06-20T11:21:58.7979712Z               "line": 73
2026-06-20T11:21:58.7979817Z             },
2026-06-20T11:21:58.7979917Z             {
2026-06-20T11:21:58.7980056Z               "path": "crates/spt-daemon/src/resthost.rs",
2026-06-20T11:21:58.7980165Z               "line": 182
2026-06-20T11:21:58.7980269Z             },
2026-06-20T11:21:58.7980371Z             {
2026-06-20T11:21:58.7980513Z               "path": "crates/spt-daemon/src/resting.rs",
2026-06-20T11:21:58.7980623Z               "line": 426
2026-06-20T11:21:58.7980733Z             },
2026-06-20T11:21:58.7980832Z             {
2026-06-20T11:21:58.7980976Z               "path": "crates/spt-net/src/net/rest.rs",
2026-06-20T11:21:58.7981072Z               "line": 31
2026-06-20T11:21:58.7981175Z             },
2026-06-20T11:21:58.7981368Z             {
2026-06-20T11:21:58.7981504Z               "path": "crates/spt/src/api/delivery.rs",
2026-06-20T11:21:58.7981618Z               "line": 202
2026-06-20T11:21:58.7981718Z             },
2026-06-20T11:21:58.7981825Z             {
2026-06-20T11:21:58.7981955Z               "path": "crates/spt/src/api/worker.rs",
2026-06-20T11:21:58.7982055Z               "line": 83
2026-06-20T11:21:58.7982164Z             },
2026-06-20T11:21:58.7982264Z             {
2026-06-20T11:21:58.7982393Z               "path": "crates/spt/src/cli.rs",
2026-06-20T11:21:58.7982502Z               "line": 1849
2026-06-20T11:21:58.7982604Z             },
2026-06-20T11:21:58.7982798Z             {
2026-06-20T11:21:58.7982932Z               "path": "crates/spt/src/wansend.rs",
2026-06-20T11:21:58.7983046Z               "line": 179
2026-06-20T11:21:58.7983141Z             },
2026-06-20T11:21:58.7983247Z             {
2026-06-20T11:21:58.7983385Z               "path": "crates/spt/src/wansend.rs",
2026-06-20T11:21:58.7983509Z               "line": 215
2026-06-20T11:21:58.7983615Z             }
2026-06-20T11:21:58.7983718Z           ]
2026-06-20T11:21:58.7983819Z         },
2026-06-20T11:21:58.7983925Z         "int": {
2026-06-20T11:21:58.7984042Z           "complete": true,
2026-06-20T11:21:58.7984153Z           "evidence": [
2026-06-20T11:21:58.7984259Z             {
2026-06-20T11:21:58.7984395Z               "path": "crates/spt-daemon/tests/twohost.rs",
2026-06-20T11:21:58.7984509Z               "line": 721
2026-06-20T11:21:58.7984610Z             },
2026-06-20T11:21:58.7984709Z             {
2026-06-20T11:21:58.7984848Z               "path": "crates/spt-daemon/tests/twohost.rs",
2026-06-20T11:21:58.7984963Z               "line": 1114
2026-06-20T11:21:58.7985071Z             },
2026-06-20T11:21:58.7985168Z             {
2026-06-20T11:21:58.7985302Z               "path": "crates/spt/src/wansend.rs",
2026-06-20T11:21:58.7985415Z               "line": 726
2026-06-20T11:21:58.7985516Z             }
2026-06-20T11:21:58.7985615Z           ]
2026-06-20T11:21:58.7985720Z         },
2026-06-20T11:21:58.7985826Z         "unit": {
2026-06-20T11:21:58.7985939Z           "complete": true,
2026-06-20T11:21:58.7986049Z           "evidence": [
2026-06-20T11:21:58.7986155Z             {
2026-06-20T11:21:58.7986297Z               "path": "crates/spt-daemon/src/dispatch.rs",
2026-06-20T11:21:58.7986407Z               "line": 661
2026-06-20T11:21:58.7986508Z             },
2026-06-20T11:21:58.7986616Z             {
2026-06-20T11:21:58.7986754Z               "path": "crates/spt-daemon/src/resting.rs",
2026-06-20T11:21:58.7986858Z               "line": 899
2026-06-20T11:21:58.7986966Z             },
2026-06-20T11:21:58.7987066Z             {
2026-06-20T11:21:58.7987210Z               "path": "crates/spt-net/src/net/rest.rs",
2026-06-20T11:21:58.7987319Z               "line": 66
2026-06-20T11:21:58.7987424Z             },
2026-06-20T11:21:58.7987530Z             {
2026-06-20T11:21:58.7987662Z               "path": "crates/spt/src/api/delivery.rs",
2026-06-20T11:21:58.7987777Z               "line": 297
2026-06-20T11:21:58.7987877Z             },
2026-06-20T11:21:58.7987977Z             {
2026-06-20T11:21:58.7988106Z               "path": "crates/spt/src/api/worker.rs",
2026-06-20T11:21:58.7988215Z               "line": 203
2026-06-20T11:21:58.7988315Z             }
2026-06-20T11:21:58.7988417Z           ]
2026-06-20T11:21:58.7988525Z         }
2026-06-20T11:21:58.7988625Z       }
2026-06-20T11:21:58.7988736Z     },
2026-06-20T11:21:58.7988840Z     {
2026-06-20T11:21:58.7989028Z       "id": "REQ-INST-7",
2026-06-20T11:21:58.7989193Z       "title": "Subnet registry + bare-id resolution policy",
2026-06-20T11:21:58.7989304Z       "requiredStages": [
2026-06-20T11:21:58.7989445Z         "impl",
2026-06-20T11:21:58.7989544Z         "unit",
2026-06-20T11:21:58.7989650Z         "int"
2026-06-20T11:21:58.7989753Z       ],
2026-06-20T11:21:58.7989866Z       "stages": {
2026-06-20T11:21:58.7989972Z         "doc": {
2026-06-20T11:21:58.7990091Z           "complete": false,
2026-06-20T11:21:58.7990339Z           "evidence": []
2026-06-20T11:21:58.7990444Z         },
2026-06-20T11:21:58.7990553Z         "impl": {
2026-06-20T11:21:58.7990654Z           "complete": true,
2026-06-20T11:21:58.7990763Z           "evidence": [
2026-06-20T11:21:58.7990868Z             {
2026-06-20T11:21:58.7991002Z               "path": "crates/spt-daemon/src/dispatch.rs",
2026-06-20T11:21:58.7991111Z               "line": 436
2026-06-20T11:21:58.7991212Z             },
2026-06-20T11:21:58.7991317Z             {
2026-06-20T11:21:58.7991464Z               "path": "crates/spt-daemon/src/registryhost.rs",
2026-06-20T11:21:58.7991575Z               "line": 27
2026-06-20T11:21:58.7991774Z             },
2026-06-20T11:21:58.7991875Z             {
2026-06-20T11:21:58.7992026Z               "path": "crates/spt-daemon/src/registryhost.rs",
2026-06-20T11:21:58.7992130Z               "line": 207
2026-06-20T11:21:58.7992235Z             },
2026-06-20T11:21:58.7992339Z             {
2026-06-20T11:21:58.7992481Z               "path": "crates/spt-daemon/src/registryhost.rs",
2026-06-20T11:21:58.7992582Z               "line": 344
2026-06-20T11:21:58.7992682Z             },
2026-06-20T11:21:58.7992791Z             {
2026-06-20T11:21:58.7992921Z               "path": "crates/spt-net/src/net/ndjson.rs",
2026-06-20T11:21:58.7993029Z               "line": 59
2026-06-20T11:21:58.7993134Z             },
2026-06-20T11:21:58.7993230Z             {
2026-06-20T11:21:58.7993373Z               "path": "crates/spt-net/src/net/registry.rs",
2026-06-20T11:21:58.7993464Z               "line": 41
2026-06-20T11:21:58.7993574Z             },
2026-06-20T11:21:58.7993725Z             {
2026-06-20T11:21:58.7993879Z               "path": "crates/spt-net/src/net/replicate.rs",
2026-06-20T11:21:58.7993979Z               "line": 27
2026-06-20T11:21:58.7994093Z             },
2026-06-20T11:21:58.7994194Z             {
2026-06-20T11:21:58.7994336Z               "path": "crates/spt-net/src/net/replicate.rs",
2026-06-20T11:21:58.7994452Z               "line": 119
2026-06-20T11:21:58.7994555Z             },
2026-06-20T11:21:58.7994656Z             {
2026-06-20T11:21:58.7994800Z               "path": "crates/spt-net/src/net/replicate.rs",
2026-06-20T11:21:58.7994917Z               "line": 134
2026-06-20T11:21:58.7995017Z             },
2026-06-20T11:21:58.7995156Z             {
2026-06-20T11:21:58.7995302Z               "path": "crates/spt-store/src/registry.rs",
2026-06-20T11:21:58.7995404Z               "line": 139
2026-06-20T11:21:58.7995508Z             }
2026-06-20T11:21:58.7995607Z           ]
2026-06-20T11:21:58.7995714Z         },
2026-06-20T11:21:58.7995823Z         "int": {
2026-06-20T11:21:58.7995927Z           "complete": true,
2026-06-20T11:21:58.7996043Z           "evidence": [
2026-06-20T11:21:58.7996142Z             {
2026-06-20T11:21:58.7996285Z               "path": "crates/spt-daemon/tests/pump.rs",
2026-06-20T11:21:58.7996391Z               "line": 145
2026-06-20T11:21:58.7996499Z             },
2026-06-20T11:21:58.7996604Z             {
2026-06-20T11:21:58.7996753Z               "path": "crates/spt-daemon/tests/twohost.rs",
2026-06-20T11:21:58.7996867Z               "line": 665
2026-06-20T11:21:58.7996967Z             },
2026-06-20T11:21:58.7997078Z             {
2026-06-20T11:21:58.7997214Z               "path": "crates/spt-daemon/tests/twohost.rs",
2026-06-20T11:21:58.7997328Z               "line": 964
2026-06-20T11:21:58.7997432Z             }
2026-06-20T11:21:58.7997531Z           ]
2026-06-20T11:21:58.7997636Z         },
2026-06-20T11:21:58.7997742Z         "unit": {
2026-06-20T11:21:58.7997850Z           "complete": true,
2026-06-20T11:21:58.7997956Z           "evidence": [
2026-06-20T11:21:58.7998065Z             {
2026-06-20T11:21:58.7998222Z               "path": "crates/spt-daemon/src/registryhost.rs",
2026-06-20T11:21:58.7998329Z               "line": 1134
2026-06-20T11:21:58.7998437Z             },
2026-06-20T11:21:58.7998542Z             {
2026-06-20T11:21:58.7998695Z               "path": "crates/spt-daemon/src/registryhost.rs",
2026-06-20T11:21:58.7998885Z               "line": 1521
2026-06-20T11:21:58.7999062Z             },
2026-06-20T11:21:58.7999162Z             {
2026-06-20T11:21:58.7999315Z               "path": "crates/spt-daemon/tests/replicate.rs",
2026-06-20T11:21:58.7999448Z               "line": 84
2026-06-20T11:21:58.7999549Z             },
2026-06-20T11:21:58.7999653Z             {
2026-06-20T11:21:58.7999801Z               "path": "crates/spt-net/src/net/registry.rs",
2026-06-20T11:21:58.7999907Z               "line": 812
2026-06-20T11:21:58.8000001Z             },
2026-06-20T11:21:58.8000100Z             {
2026-06-20T11:21:58.8003251Z               "path": "crates/spt-net/src/net/registry.rs",
2026-06-20T11:21:58.8003528Z               "line": 823
2026-06-20T11:21:58.8003632Z             },
2026-06-20T11:21:58.8003738Z             {
2026-06-20T11:21:58.8003895Z               "path": "crates/spt-net/src/net/registry.rs",
2026-06-20T11:21:58.8003995Z               "line": 838
2026-06-20T11:21:58.8004100Z             },
2026-06-20T11:21:58.8004215Z             {
2026-06-20T11:21:58.8004373Z               "path": "crates/spt-net/src/net/replicate.rs",
2026-06-20T11:21:58.8004515Z               "line": 166
2026-06-20T11:21:58.8004619Z             },
2026-06-20T11:21:58.8004720Z             {
2026-06-20T11:21:58.8004882Z               "path": "crates/spt-net/src/net/replicate.rs",
2026-06-20T11:21:58.8004988Z               "line": 181
2026-06-20T11:21:58.8005087Z             },
2026-06-20T11:21:58.8005182Z             {
2026-06-20T11:21:58.8005327Z               "path": "crates/spt-net/src/net/replicate.rs",
2026-06-20T11:21:58.8005430Z               "line": 214
2026-06-20T11:21:58.8005534Z             }
2026-06-20T11:21:58.8005639Z           ]
2026-06-20T11:21:58.8005740Z         }
2026-06-20T11:21:58.8005848Z       }
2026-06-20T11:21:58.8005944Z     },
2026-06-20T11:21:58.8006036Z     {
2026-06-20T11:21:58.8006154Z       "id": "REQ-INST-8",
2026-06-20T11:21:58.8006331Z       "title": "Remote-control mode distinct from local operation",
2026-06-20T11:21:58.8006455Z       "requiredStages": [
2026-06-20T11:21:58.8006555Z         "impl",
2026-06-20T11:21:58.8006660Z         "unit",
2026-06-20T11:21:58.8006760Z         "int"
2026-06-20T11:21:58.8006864Z       ],
2026-06-20T11:21:58.8006980Z       "stages": {
2026-06-20T11:21:58.8007079Z         "doc": {
2026-06-20T11:21:58.8007198Z           "complete": false,
2026-06-20T11:21:58.8007299Z           "evidence": []
2026-06-20T11:21:58.8007402Z         },
2026-06-20T11:21:58.8007489Z         "impl": {
2026-06-20T11:21:58.8007600Z           "complete": true,
2026-06-20T11:21:58.8007713Z           "evidence": [
2026-06-20T11:21:58.8007812Z             {
2026-06-20T11:21:58.8007965Z               "path": "crates/spt-daemon/src/attach.rs",
2026-06-20T11:21:58.8008077Z               "line": 104
2026-06-20T11:21:58.8008182Z             },
2026-06-20T11:21:58.8008282Z             {
2026-06-20T11:21:58.8008429Z               "path": "crates/spt-daemon/src/attach.rs",
2026-06-20T11:21:58.8008539Z               "line": 330
2026-06-20T11:21:58.8008645Z             },
2026-06-20T11:21:58.8008749Z             {
2026-06-20T11:21:58.8008889Z               "path": "crates/spt-daemon/src/attach.rs",
2026-06-20T11:21:58.8009087Z               "line": 370
2026-06-20T11:21:58.8009184Z             },
2026-06-20T11:21:58.8009288Z             {
2026-06-20T11:21:58.8009440Z               "path": "crates/spt-net/src/net/attach.rs",
2026-06-20T11:21:58.8009547Z               "line": 62
2026-06-20T11:21:58.8009660Z             }
2026-06-20T11:21:58.8009755Z           ]
2026-06-20T11:21:58.8009862Z         },
2026-06-20T11:21:58.8009950Z         "int": {
2026-06-20T11:21:58.8010061Z           "complete": true,
2026-06-20T11:21:58.8010171Z           "evidence": [
2026-06-20T11:21:58.8010274Z             {
2026-06-20T11:21:58.8010429Z               "path": "crates/spt-daemon/tests/dispatch.rs",
2026-06-20T11:21:58.8010533Z               "line": 415
2026-06-20T11:21:58.8010637Z             },
2026-06-20T11:21:58.8010851Z             {
2026-06-20T11:21:58.8011006Z               "path": "crates/spt-daemon/tests/twohost.rs",
2026-06-20T11:21:58.8011126Z               "line": 1028
2026-06-20T11:21:58.8011216Z             }
2026-06-20T11:21:58.8011321Z           ]
2026-06-20T11:21:58.8011422Z         },
2026-06-20T11:21:58.8011522Z         "unit": {
2026-06-20T11:21:58.8011621Z           "complete": true,
2026-06-20T11:21:58.8011741Z           "evidence": [
2026-06-20T11:21:58.8011846Z             {
2026-06-20T11:21:58.8011978Z               "path": "crates/spt-daemon/tests/attach.rs",
2026-06-20T11:21:58.8012090Z               "line": 366
2026-06-20T11:21:58.8012189Z             },
2026-06-20T11:21:58.8012385Z             {
2026-06-20T11:21:58.8012517Z               "path": "crates/spt-daemon/tests/attach.rs",
2026-06-20T11:21:58.8012627Z               "line": 633
2026-06-20T11:21:58.8012738Z             },
2026-06-20T11:21:58.8012837Z             {
2026-06-20T11:21:58.8012977Z               "path": "crates/spt-net/src/net/attach.rs",
2026-06-20T11:21:58.8013086Z               "line": 116
2026-06-20T11:21:58.8013184Z             },
2026-06-20T11:21:58.8013274Z             {
2026-06-20T11:21:58.8013435Z               "path": "crates/spt-net/src/net/attach.rs",
2026-06-20T11:21:58.8013530Z               "line": 160
2026-06-20T11:21:58.8013644Z             }
2026-06-20T11:21:58.8013755Z           ]
2026-06-20T11:21:58.8013859Z         }
2026-06-20T11:21:58.8013964Z       }
2026-06-20T11:21:58.8014060Z     },
2026-06-20T11:21:58.8014164Z     {
2026-06-20T11:21:58.8014284Z       "id": "REQ-INST-9",
2026-06-20T11:21:58.8014488Z       "title": "Multi-subnet membership (same-user N subnets; cross-user seam)",
2026-06-20T11:21:58.8014599Z       "requiredStages": [
2026-06-20T11:21:58.8014698Z         "impl",
2026-06-20T11:21:58.8014812Z         "unit"
2026-06-20T11:21:58.8014913Z       ],
2026-06-20T11:21:58.8015018Z       "stages": {
2026-06-20T11:21:58.8015118Z         "doc": {
2026-06-20T11:21:58.8015218Z           "complete": false,
2026-06-20T11:21:58.8015332Z           "evidence": []
2026-06-20T11:21:58.8015433Z         },
2026-06-20T11:21:58.8015529Z         "impl": {
2026-06-20T11:21:58.8015638Z           "complete": true,
2026-06-20T11:21:58.8015747Z           "evidence": [
2026-06-20T11:21:58.8015853Z             {
2026-06-20T11:21:58.8015995Z               "path": "crates/spt-net/src/net/registry.rs",
2026-06-20T11:21:58.8016103Z               "line": 449
2026-06-20T11:21:58.8016199Z             }
2026-06-20T11:21:58.8016305Z           ]
2026-06-20T11:21:58.8016409Z         },
2026-06-20T11:21:58.8016514Z         "int": {
2026-06-20T11:21:58.8016624Z           "complete": false,
2026-06-20T11:21:58.8016738Z           "evidence": []
2026-06-20T11:21:58.8016839Z         },
2026-06-20T11:21:58.8016939Z         "unit": {
2026-06-20T11:21:58.8017048Z           "complete": true,
2026-06-20T11:21:58.8017153Z           "evidence": [
2026-06-20T11:21:58.8017249Z             {
2026-06-20T11:21:58.8017386Z               "path": "crates/spt-net/src/net/registry.rs",
2026-06-20T11:21:58.8017488Z               "line": 1397
2026-06-20T11:21:58.8017592Z             },
2026-06-20T11:21:58.8017687Z             {
2026-06-20T11:21:58.8017821Z               "path": "crates/spt-net/src/net/registry.rs",
2026-06-20T11:21:58.8017939Z               "line": 1406
2026-06-20T11:21:58.8018039Z             },
2026-06-20T11:21:58.8018141Z             {
2026-06-20T11:21:58.8018278Z               "path": "crates/spt-net/src/net/registry.rs",
2026-06-20T11:21:58.8018386Z               "line": 1422
2026-06-20T11:21:58.8018487Z             },
2026-06-20T11:21:58.8018585Z             {
2026-06-20T11:21:58.8018718Z               "path": "crates/spt-net/src/net/registry.rs",
2026-06-20T11:21:58.8018819Z               "line": 1434
2026-06-20T11:21:58.8018928Z             },
2026-06-20T11:21:58.8019109Z             {
2026-06-20T11:21:58.8019238Z               "path": "crates/spt-net/src/net/registry.rs",
2026-06-20T11:21:58.8019347Z               "line": 1454
2026-06-20T11:21:58.8019591Z             }
2026-06-20T11:21:58.8019701Z           ]
2026-06-20T11:21:58.8019801Z         }
2026-06-20T11:21:58.8019906Z       }
2026-06-20T11:21:58.8020001Z     },
2026-06-20T11:21:58.8020092Z     {
2026-06-20T11:21:58.8020206Z       "id": "REQ-INSTALL-1",
2026-06-20T11:21:58.8020412Z       "title": "Two install paths; signed one-line script; OS-service registration",
2026-06-20T11:21:58.8020515Z       "requiredStages": [
2026-06-20T11:21:58.8020621Z         "doc",
2026-06-20T11:21:58.8020727Z         "impl",
2026-06-20T11:21:58.8020830Z         "int"
2026-06-20T11:21:58.8020936Z       ],
2026-06-20T11:21:58.8021037Z       "stages": {
2026-06-20T11:21:58.8021258Z         "doc": {
2026-06-20T11:21:58.8021373Z           "complete": true,
2026-06-20T11:21:58.8021476Z           "evidence": [
2026-06-20T11:21:58.8021580Z             {
2026-06-20T11:21:58.8021696Z               "path": "CONTEXT.md",
2026-06-20T11:21:58.8021805Z               "line": 754
2026-06-20T11:21:58.8021900Z             }
2026-06-20T11:21:58.8021996Z           ]
2026-06-20T11:21:58.8022101Z         },
2026-06-20T11:21:58.8022205Z         "impl": {
2026-06-20T11:21:58.8022306Z           "complete": true,
2026-06-20T11:21:58.8022411Z           "evidence": [
2026-06-20T11:21:58.8022519Z             {
2026-06-20T11:21:58.8022640Z               "path": "installer/install.ps1",
2026-06-20T11:21:58.8022749Z               "line": 57
2026-06-20T11:21:58.8022854Z             },
2026-06-20T11:21:58.8022945Z             {
2026-06-20T11:21:58.8023072Z               "path": "installer/install.sh",
2026-06-20T11:21:58.8023173Z               "line": 52
2026-06-20T11:21:58.8023274Z             }
2026-06-20T11:21:58.8023377Z           ]
2026-06-20T11:21:58.8023488Z         },
2026-06-20T11:21:58.8023594Z         "int": {
2026-06-20T11:21:58.8023702Z           "complete": true,
2026-06-20T11:21:58.8023820Z           "evidence": [
2026-06-20T11:21:58.8023921Z             {
2026-06-20T11:21:58.8024057Z               "path": "crates/spt/tests/oneliner_e2e.rs",
2026-06-20T11:21:58.8024156Z               "line": 21
2026-06-20T11:21:58.8024262Z             }
2026-06-20T11:21:58.8024366Z           ]
2026-06-20T11:21:58.8024466Z         },
2026-06-20T11:21:58.8024568Z         "unit": {
2026-06-20T11:21:58.8024672Z           "complete": false,
2026-06-20T11:21:58.8024781Z           "evidence": []
2026-06-20T11:21:58.8024878Z         }
2026-06-20T11:21:58.8024973Z       }
2026-06-20T11:21:58.8025072Z     },
2026-06-20T11:21:58.8025173Z     {
2026-06-20T11:21:58.8025287Z       "id": "REQ-INSTALL-10",
2026-06-20T11:21:58.8026744Z       "title": "Windows at-logon autostart runs the daemon in the background with no persistent window: the scheduled task launches `spt daemon start` (which spawn_detaches a console-less DETACHED_PROCESS daemon and exits) rather than the foreground `spt daemon run` — Task Scheduler's interactive ONLOGON launch of a long-lived console process otherwise leaves a visible console window for the daemon's whole lifetime (v0.7.4)",
2026-06-20T11:21:58.8026875Z       "requiredStages": [
2026-06-20T11:21:58.8026974Z         "impl",
2026-06-20T11:21:58.8027074Z         "unit"
2026-06-20T11:21:58.8027179Z       ],
2026-06-20T11:21:58.8029540Z       "stages": {
2026-06-20T11:21:58.8029651Z         "doc": {
2026-06-20T11:21:58.8029775Z           "complete": false,
2026-06-20T11:21:58.8029878Z           "evidence": []
2026-06-20T11:21:58.8029989Z         },
2026-06-20T11:21:58.8030099Z         "impl": {
2026-06-20T11:21:58.8030222Z           "complete": true,
2026-06-20T11:21:58.8030338Z           "evidence": [
2026-06-20T11:21:58.8030456Z             {
2026-06-20T11:21:58.8030590Z               "path": "installer/install.ps1",
2026-06-20T11:21:58.8030723Z               "line": 191
2026-06-20T11:21:58.8030827Z             }
2026-06-20T11:21:58.8030934Z           ]
2026-06-20T11:21:58.8031057Z         },
2026-06-20T11:21:58.8031166Z         "int": {
2026-06-20T11:21:58.8031296Z           "complete": false,
2026-06-20T11:21:58.8031399Z           "evidence": []
2026-06-20T11:21:58.8031640Z         },
2026-06-20T11:21:58.8031757Z         "unit": {
2026-06-20T11:21:58.8031866Z           "complete": true,
2026-06-20T11:21:58.8031994Z           "evidence": [
2026-06-20T11:21:58.8032102Z             {
2026-06-20T11:21:58.8032261Z               "path": "crates/spt/tests/oneliner_e2e.rs",
2026-06-20T11:21:58.8032374Z               "line": 211
2026-06-20T11:21:58.8032488Z             }
2026-06-20T11:21:58.8032608Z           ]
2026-06-20T11:21:58.8032717Z         }
2026-06-20T11:21:58.8032828Z       }
2026-06-20T11:21:58.8032937Z     },
2026-06-20T11:21:58.8033046Z     {
2026-06-20T11:21:58.8033166Z       "id": "REQ-INSTALL-11",
2026-06-20T11:21:58.8035128Z       "title": "Adapter command templates resolve their program against the adapter's install dir BEFORE PATH: a `.spt`-shipped binary (dropped to adapters/_github/<safe>/ by --release/--github acquisition, or kept in the source_dir under copy-mode where only manifest+strings/ are copied to adapters/<name>) runs without any PATH placement — a bare-name template token (e.g. `claude-spt-digest ...`) is rewritten to <install_dir>/<program>(.exe on Windows) when that file exists, else left bare for the PATH fallback. Makes a `.spt` self-contained (closes the --release bundled-binary gap perri confirmed) (v0.7.4)",
2026-06-20T11:21:58.8035255Z       "requiredStages": [
2026-06-20T11:21:58.8035365Z         "doc",
2026-06-20T11:21:58.8035475Z         "impl",
2026-06-20T11:21:58.8035594Z         "unit"
2026-06-20T11:21:58.8035705Z       ],
2026-06-20T11:21:58.8035818Z       "stages": {
2026-06-20T11:21:58.8035932Z         "doc": {
2026-06-20T11:21:58.8036058Z           "complete": true,
2026-06-20T11:21:58.8036181Z           "evidence": [
2026-06-20T11:21:58.8036291Z             {
2026-06-20T11:21:58.8036420Z               "path": "CONTEXT.md",
2026-06-20T11:21:58.8036543Z               "line": 138
2026-06-20T11:21:58.8036654Z             },
2026-06-20T11:21:58.8036763Z             {
2026-06-20T11:21:58.8036906Z               "path": "docs/MANIFEST.md",
2026-06-20T11:21:58.8037026Z               "line": 82
2026-06-20T11:21:58.8037143Z             }
2026-06-20T11:21:58.8037261Z           ]
2026-06-20T11:21:58.8037372Z         },
2026-06-20T11:21:58.8037486Z         "impl": {
2026-06-20T11:21:58.8037605Z           "complete": true,
2026-06-20T11:21:58.8037721Z           "evidence": [
2026-06-20T11:21:58.8037829Z             {
2026-06-20T11:21:58.8037983Z               "path": "crates/spt-daemon/src/digest.rs",
2026-06-20T11:21:58.8038102Z               "line": 223
2026-06-20T11:21:58.8038206Z             },
2026-06-20T11:21:58.8038317Z             {
2026-06-20T11:21:58.8038468Z               "path": "crates/spt-daemon/src/lifecycle.rs",
2026-06-20T11:21:58.8038593Z               "line": 99
2026-06-20T11:21:58.8038702Z             },
2026-06-20T11:21:58.8038817Z             {
2026-06-20T11:21:58.8039045Z               "path": "crates/spt-daemon/src/lifecycle.rs",
2026-06-20T11:21:58.8039165Z               "line": 117
2026-06-20T11:21:58.8039280Z             },
2026-06-20T11:21:58.8039388Z             {
2026-06-20T11:21:58.8039545Z               "path": "crates/spt-daemon/src/livehost.rs",
2026-06-20T11:21:58.8039654Z               "line": 332
2026-06-20T11:21:58.8039762Z             },
2026-06-20T11:21:58.8039862Z             {
2026-06-20T11:21:58.8040002Z               "path": "crates/spt-live/src/digest.rs",
2026-06-20T11:21:58.8040124Z               "line": 88
2026-06-20T11:21:58.8040230Z             },
2026-06-20T11:21:58.8040349Z             {
2026-06-20T11:21:58.8040487Z               "path": "crates/spt-live/src/digest.rs",
2026-06-20T11:21:58.8040607Z               "line": 104
2026-06-20T11:21:58.8040725Z             },
2026-06-20T11:21:58.8040826Z             {
2026-06-20T11:21:58.8040978Z               "path": "crates/spt-runtime/src/runtime.rs",
2026-06-20T11:21:58.8041078Z               "line": 297
2026-06-20T11:21:58.8041184Z             },
2026-06-20T11:21:58.8041293Z             {
2026-06-20T11:21:58.8041441Z               "path": "crates/spt-runtime/src/runtime.rs",
2026-06-20T11:21:58.8041665Z               "line": 332
2026-06-20T11:21:58.8041770Z             },
2026-06-20T11:21:58.8041885Z             {
2026-06-20T11:21:58.8042018Z               "path": "crates/spt-runtime/src/runtime.rs",
2026-06-20T11:21:58.8042134Z               "line": 523
2026-06-20T11:21:58.8042242Z             },
2026-06-20T11:21:58.8042355Z             {
2026-06-20T11:21:58.8042503Z               "path": "crates/spt-runtime/src/runtime.rs",
2026-06-20T11:21:58.8042611Z               "line": 546
2026-06-20T11:21:58.8042719Z             },
2026-06-20T11:21:58.8042831Z             {
2026-06-20T11:21:58.8042977Z               "path": "crates/spt-runtime/src/runtime.rs",
2026-06-20T11:21:58.8043202Z               "line": 561
2026-06-20T11:21:58.8043315Z             },
2026-06-20T11:21:58.8043436Z             {
2026-06-20T11:21:58.8043569Z               "path": "crates/spt/src/api/mod.rs",
2026-06-20T11:21:58.8043692Z               "line": 492
2026-06-20T11:21:58.8043808Z             }
2026-06-20T11:21:58.8043931Z           ]
2026-06-20T11:21:58.8044037Z         },
2026-06-20T11:21:58.8044146Z         "int": {
2026-06-20T11:21:58.8044274Z           "complete": false,
2026-06-20T11:21:58.8044394Z           "evidence": []
2026-06-20T11:21:58.8044503Z         },
2026-06-20T11:21:58.8044618Z         "unit": {
2026-06-20T11:21:58.8044747Z           "complete": true,
2026-06-20T11:21:58.8044874Z           "evidence": [
2026-06-20T11:21:58.8044984Z             {
2026-06-20T11:21:58.8045121Z               "path": "crates/spt-runtime/src/runtime.rs",
2026-06-20T11:21:58.8045224Z               "line": 799
2026-06-20T11:21:58.8045349Z             },
2026-06-20T11:21:58.8045459Z             {
2026-06-20T11:21:58.8045615Z               "path": "crates/spt-runtime/src/runtime.rs",
2026-06-20T11:21:58.8045744Z               "line": 811
2026-06-20T11:21:58.8045863Z             },
2026-06-20T11:21:58.8045984Z             {
2026-06-20T11:21:58.8046112Z               "path": "crates/spt-runtime/src/runtime.rs",
2026-06-20T11:21:58.8046240Z               "line": 820
2026-06-20T11:21:58.8046360Z             }
2026-06-20T11:21:58.8046483Z           ]
2026-06-20T11:21:58.8046603Z         }
2026-06-20T11:21:58.8046721Z       }
2026-06-20T11:21:58.8046841Z     },
2026-06-20T11:21:58.8046952Z     {
2026-06-20T11:21:58.8047084Z       "id": "REQ-INSTALL-12",
2026-06-20T11:21:58.8049864Z       "title": "Durable active-profile pointer for bind-time profile selection (ADR-0021): adapters/active-profiles.toml at the registry ROOT (sibling to the per-adapter <name>/ dirs, so adapter add/update/remove — which only rewrite a <name>/ subdir — can never clobber it), a flat host_binary → \"adapter[:profile]\" map. Read at bind as the PRIMARY profile selector; unset → the registered_at_ms fallback (REQ-START-5). Written ONLY by `spt adapter use <adapter>[:profile]` (resolves the adapter's host_binaries → sets each binary→adapter[:profile]); `spt adapter use --clear <adapter|binary>` drops. NEVER auto-written by install/update/adapter add (that is precisely what would let an update silently flip the active profile). A stale pointer (uninstalled adapter / deleted profile) self-heals: ignored, fall back, warn once. Pruned on adapter remove. Atomic write (spt_store atomic). (v0.9.0)",
2026-06-20T11:21:58.8050015Z       "requiredStages": [
2026-06-20T11:21:58.8050139Z         "doc",
2026-06-20T11:21:58.8050256Z         "impl",
2026-06-20T11:21:58.8050374Z         "unit",
2026-06-20T11:21:58.8050499Z         "int"
2026-06-20T11:21:58.8050608Z       ],
2026-06-20T11:21:58.8050723Z       "stages": {
2026-06-20T11:21:58.8050833Z         "doc": {
2026-06-20T11:21:58.8050951Z           "complete": true,
2026-06-20T11:21:58.8051076Z           "evidence": [
2026-06-20T11:21:58.8051195Z             {
2026-06-20T11:21:58.8051318Z               "path": "CONTEXT.md",
2026-06-20T11:21:58.8051425Z               "line": 185
2026-06-20T11:21:58.8051534Z             }
2026-06-20T11:21:58.8051638Z           ]
2026-06-20T11:21:58.8051863Z         },
2026-06-20T11:21:58.8051971Z         "impl": {
2026-06-20T11:21:58.8052083Z           "complete": true,
2026-06-20T11:21:58.8052210Z           "evidence": [
2026-06-20T11:21:58.8052316Z             {
2026-06-20T11:21:58.8052468Z               "path": "crates/spt-runtime/src/resolve.rs",
2026-06-20T11:21:58.8052578Z               "line": 27
2026-06-20T11:21:58.8052684Z             },
2026-06-20T11:21:58.8052788Z             {
2026-06-20T11:21:58.8052939Z               "path": "crates/spt-runtime/src/resolve.rs",
2026-06-20T11:21:58.8053063Z               "line": 223
2026-06-20T11:21:58.8053171Z             },
2026-06-20T11:21:58.8053280Z             {
2026-06-20T11:21:58.8053509Z               "path": "crates/spt/src/cli.rs",
2026-06-20T11:21:58.8053628Z               "line": 5677
2026-06-20T11:21:58.8053724Z             }
2026-06-20T11:21:58.8053852Z           ]
2026-06-20T11:21:58.8053958Z         },
2026-06-20T11:21:58.8054072Z         "int": {
2026-06-20T11:21:58.8054204Z           "complete": true,
2026-06-20T11:21:58.8054330Z           "evidence": [
2026-06-20T11:21:58.8054444Z             {
2026-06-20T11:21:58.8054587Z               "path": "crates/spt/tests/live_resolve_e2e.rs",
2026-06-20T11:21:58.8054715Z               "line": 19
2026-06-20T11:21:58.8054820Z             }
2026-06-20T11:21:58.8054927Z           ]
2026-06-20T11:21:58.8055030Z         },
2026-06-20T11:21:58.8055140Z         "unit": {
2026-06-20T11:21:58.8055269Z           "complete": true,
2026-06-20T11:21:58.8055392Z           "evidence": [
2026-06-20T11:21:58.8055506Z             {
2026-06-20T11:21:58.8055662Z               "path": "crates/spt-runtime/src/resolve.rs",
2026-06-20T11:21:58.8055775Z               "line": 395
2026-06-20T11:21:58.8055895Z             },
2026-06-20T11:21:58.8055991Z             {
2026-06-20T11:21:58.8056137Z               "path": "crates/spt-runtime/src/resolve.rs",
2026-06-20T11:21:58.8056263Z               "line": 421
2026-06-20T11:21:58.8056376Z             },
2026-06-20T11:21:58.8056495Z             {
2026-06-20T11:21:58.8056638Z               "path": "crates/spt-runtime/src/resolve.rs",
2026-06-20T11:21:58.8056766Z               "line": 440
2026-06-20T11:21:58.8056877Z             },
2026-06-20T11:21:58.8056996Z             {
2026-06-20T11:21:58.8057144Z               "path": "crates/spt-runtime/src/resolve.rs",
2026-06-20T11:21:58.8057259Z               "line": 475
2026-06-20T11:21:58.8057368Z             },
2026-06-20T11:21:58.8057474Z             {
2026-06-20T11:21:58.8057611Z               "path": "crates/spt/src/cli.rs",
2026-06-20T11:21:58.8057721Z               "line": 8665
2026-06-20T11:21:58.8057836Z             }
2026-06-20T11:21:58.8057949Z           ]
2026-06-20T11:21:58.8058055Z         }
2026-06-20T11:21:58.8058175Z       }
2026-06-20T11:21:58.8058282Z     },
2026-06-20T11:21:58.8058406Z     {
2026-06-20T11:21:58.8058521Z       "id": "REQ-INSTALL-2",
2026-06-20T11:21:58.8058683Z       "title": "Marketplace-repackaging-friendly install",
2026-06-20T11:21:58.8058813Z       "requiredStages": [
2026-06-20T11:21:58.8058921Z         "doc"
2026-06-20T11:21:58.8059137Z       ],
2026-06-20T11:21:58.8059236Z       "stages": {
2026-06-20T11:21:58.8059350Z         "doc": {
2026-06-20T11:21:58.8059475Z           "complete": true,
2026-06-20T11:21:58.8059598Z           "evidence": [
2026-06-20T11:21:58.8059709Z             {
2026-06-20T11:21:58.8059832Z               "path": "CONTEXT.md",
2026-06-20T11:21:58.8059951Z               "line": 755
2026-06-20T11:21:58.8060057Z             }
2026-06-20T11:21:58.8060170Z           ]
2026-06-20T11:21:58.8060270Z         },
2026-06-20T11:21:58.8060382Z         "impl": {
2026-06-20T11:21:58.8060508Z           "complete": false,
2026-06-20T11:21:58.8060631Z           "evidence": []
2026-06-20T11:21:58.8060746Z         },
2026-06-20T11:21:58.8060859Z         "int": {
2026-06-20T11:21:58.8060978Z           "complete": false,
2026-06-20T11:21:58.8061088Z           "evidence": []
2026-06-20T11:21:58.8061197Z         },
2026-06-20T11:21:58.8061307Z         "unit": {
2026-06-20T11:21:58.8061545Z           "complete": false,
2026-06-20T11:21:58.8061661Z           "evidence": []
2026-06-20T11:21:58.8061775Z         }
2026-06-20T11:21:58.8061893Z       }
2026-06-20T11:21:58.8062004Z     },
2026-06-20T11:21:58.8062113Z     {
2026-06-20T11:21:58.8062241Z       "id": "REQ-INSTALL-3",
2026-06-20T11:21:58.8062413Z       "title": "Idempotent + interactive-optional first run",
2026-06-20T11:21:58.8062537Z       "requiredStages": [
2026-06-20T11:21:58.8062648Z         "impl",
2026-06-20T11:21:58.8062761Z         "int"
2026-06-20T11:21:58.8062866Z       ],
2026-06-20T11:21:58.8062972Z       "stages": {
2026-06-20T11:21:58.8063090Z         "doc": {
2026-06-20T11:21:58.8063329Z           "complete": false,
2026-06-20T11:21:58.8063456Z           "evidence": []
2026-06-20T11:21:58.8063561Z         },
2026-06-20T11:21:58.8063688Z         "impl": {
2026-06-20T11:21:58.8063806Z           "complete": true,
2026-06-20T11:21:58.8063926Z           "evidence": [
2026-06-20T11:21:58.8064036Z             {
2026-06-20T11:21:58.8064169Z               "path": "installer/install.ps1",
2026-06-20T11:21:58.8064294Z               "line": 100
2026-06-20T11:21:58.8064398Z             },
2026-06-20T11:21:58.8064508Z             {
2026-06-20T11:21:58.8064637Z               "path": "installer/install.ps1",
2026-06-20T11:21:58.8064760Z               "line": 111
2026-06-20T11:21:58.8064857Z             },
2026-06-20T11:21:58.8064970Z             {
2026-06-20T11:21:58.8065104Z               "path": "installer/install.sh",
2026-06-20T11:21:58.8065209Z               "line": 79
2026-06-20T11:21:58.8065318Z             }
2026-06-20T11:21:58.8065443Z           ]
2026-06-20T11:21:58.8065576Z         },
2026-06-20T11:21:58.8065695Z         "int": {
2026-06-20T11:21:58.8065820Z           "complete": true,
2026-06-20T11:21:58.8065952Z           "evidence": [
2026-06-20T11:21:58.8066061Z             {
2026-06-20T11:21:58.8066213Z               "path": "crates/spt/tests/oneliner_e2e.rs",
2026-06-20T11:21:58.8066344Z               "line": 167
2026-06-20T11:21:58.8066464Z             }
2026-06-20T11:21:58.8066579Z           ]
2026-06-20T11:21:58.8066692Z         },
2026-06-20T11:21:58.8066803Z         "unit": {
2026-06-20T11:21:58.8066927Z           "complete": false,
2026-06-20T11:21:58.8067055Z           "evidence": []
2026-06-20T11:21:58.8067166Z         }
2026-06-20T11:21:58.8067284Z       }
2026-06-20T11:21:58.8067400Z     },
2026-06-20T11:21:58.8067513Z     {
2026-06-20T11:21:58.8067641Z       "id": "REQ-INSTALL-4",
2026-06-20T11:21:58.8068285Z       "title": "Adapter registration lifecycle: spt adapter add (--github, manifest-first, install-is-first-update) + soft-deregister remove + optional manifest uninstall template; node-local registered-adapter set self-update ripples over",
2026-06-20T11:21:58.8068416Z       "requiredStages": [
2026-06-20T11:21:58.8068528Z         "impl",
2026-06-20T11:21:58.8068649Z         "unit"
2026-06-20T11:21:58.8068759Z       ],
2026-06-20T11:21:58.8068866Z       "stages": {
2026-06-20T11:21:58.8069214Z         "doc": {
2026-06-20T11:21:58.8069334Z           "complete": false,
2026-06-20T11:21:58.8069496Z           "evidence": []
2026-06-20T11:21:58.8069605Z         },
2026-06-20T11:21:58.8069730Z         "impl": {
2026-06-20T11:21:58.8069857Z           "complete": true,
2026-06-20T11:21:58.8069973Z           "evidence": [
2026-06-20T11:21:58.8070096Z             {
2026-06-20T11:21:58.8070249Z               "path": "crates/spt-daemon/src/adapter_update.rs",
2026-06-20T11:21:58.8070378Z               "line": 165
2026-06-20T11:21:58.8070492Z             },
2026-06-20T11:21:58.8070617Z             {
2026-06-20T11:21:58.8070768Z               "path": "crates/spt-runtime/src/registry.rs",
2026-06-20T11:21:58.8070883Z               "line": 29
2026-06-20T11:21:58.8070994Z             },
2026-06-20T11:21:58.8071102Z             {
2026-06-20T11:21:58.8071249Z               "path": "crates/spt-runtime/src/registry.rs",
2026-06-20T11:21:58.8071362Z               "line": 288
2026-06-20T11:21:58.8071600Z             },
2026-06-20T11:21:58.8071714Z             {
2026-06-20T11:21:58.8071857Z               "path": "crates/spt-runtime/src/registry.rs",
2026-06-20T11:21:58.8071977Z               "line": 356
2026-06-20T11:21:58.8072081Z             },
2026-06-20T11:21:58.8072196Z             {
2026-06-20T11:21:58.8072344Z               "path": "crates/spt-runtime/src/registry.rs",
2026-06-20T11:21:58.8072472Z               "line": 386
2026-06-20T11:21:58.8072592Z             },
2026-06-20T11:21:58.8072701Z             {
2026-06-20T11:21:58.8072840Z               "path": "crates/spt-runtime/src/registry.rs",
2026-06-20T11:21:58.8072963Z               "line": 434
2026-06-20T11:21:58.8073170Z             },
2026-06-20T11:21:58.8073292Z             {
2026-06-20T11:21:58.8073436Z               "path": "crates/spt/src/cli.rs",
2026-06-20T11:21:58.8073551Z               "line": 5396
2026-06-20T11:21:58.8073664Z             }
2026-06-20T11:21:58.8073785Z           ]
2026-06-20T11:21:58.8073894Z         },
2026-06-20T11:21:58.8074012Z         "int": {
2026-06-20T11:21:58.8074121Z           "complete": false,
2026-06-20T11:21:58.8074243Z           "evidence": []
2026-06-20T11:21:58.8074357Z         },
2026-06-20T11:21:58.8074472Z         "unit": {
2026-06-20T11:21:58.8074596Z           "complete": true,
2026-06-20T11:21:58.8074724Z           "evidence": [
2026-06-20T11:21:58.8074835Z             {
2026-06-20T11:21:58.8074991Z               "path": "crates/spt-daemon/src/adapter_update.rs",
2026-06-20T11:21:58.8075112Z               "line": 375
2026-06-20T11:21:58.8075226Z             },
2026-06-20T11:21:58.8075330Z             {
2026-06-20T11:21:58.8075478Z               "path": "crates/spt-runtime/src/registry.rs",
2026-06-20T11:21:58.8075597Z               "line": 808
2026-06-20T11:21:58.8075707Z             },
2026-06-20T11:21:58.8075821Z             {
2026-06-20T11:21:58.8075969Z               "path": "crates/spt-runtime/src/registry.rs",
2026-06-20T11:21:58.8076098Z               "line": 849
2026-06-20T11:21:58.8076207Z             },
2026-06-20T11:21:58.8076328Z             {
2026-06-20T11:21:58.8076456Z               "path": "crates/spt-runtime/src/registry.rs",
2026-06-20T11:21:58.8076573Z               "line": 869
2026-06-20T11:21:58.8076683Z             },
2026-06-20T11:21:58.8076801Z             {
2026-06-20T11:21:58.8076938Z               "path": "crates/spt/src/cli.rs",
2026-06-20T11:21:58.8077053Z               "line": 8403
2026-06-20T11:21:58.8077172Z             }
2026-06-20T11:21:58.8077286Z           ]
2026-06-20T11:21:58.8077402Z         }
2026-06-20T11:21:58.8077510Z       }
2026-06-20T11:21:58.8077625Z     },
2026-06-20T11:21:58.8077740Z     {
2026-06-20T11:21:58.8077854Z       "id": "REQ-INSTALL-5",
2026-06-20T11:21:58.8078364Z       "title": "Non-interactive install path: the canonical one-liner doubles as every adapter's pack-in on-demand install (no second mechanism); sha256-verified fetch; user-PATH registration",
2026-06-20T11:21:58.8078474Z       "requiredStages": [
2026-06-20T11:21:58.8078604Z         "impl",
2026-06-20T11:21:58.8078722Z         "int"
2026-06-20T11:21:58.8078827Z       ],
2026-06-20T11:21:58.8078938Z       "stages": {
2026-06-20T11:21:58.8079132Z         "doc": {
2026-06-20T11:21:58.8079257Z           "complete": false,
2026-06-20T11:21:58.8079370Z           "evidence": []
2026-06-20T11:21:58.8079502Z         },
2026-06-20T11:21:58.8079628Z         "impl": {
2026-06-20T11:21:58.8079746Z           "complete": true,
2026-06-20T11:21:58.8079865Z           "evidence": [
2026-06-20T11:21:58.8079971Z             {
2026-06-20T11:21:58.8080108Z               "path": "installer/install.ps1",
2026-06-20T11:21:58.8080219Z               "line": 5
2026-06-20T11:21:58.8080343Z             },
2026-06-20T11:21:58.8080466Z             {
2026-06-20T11:21:58.8080590Z               "path": "installer/install.sh",
2026-06-20T11:21:58.8080705Z               "line": 6
2026-06-20T11:21:58.8080819Z             }
2026-06-20T11:21:58.8080929Z           ]
2026-06-20T11:21:58.8081043Z         },
2026-06-20T11:21:58.8081277Z         "int": {
2026-06-20T11:21:58.8081420Z           "complete": true,
2026-06-20T11:21:58.8081535Z           "evidence": [
2026-06-20T11:21:58.8081652Z             {
2026-06-20T11:21:58.8081795Z               "path": "crates/spt/tests/oneliner_e2e.rs",
2026-06-20T11:21:58.8081914Z               "line": 22
2026-06-20T11:21:58.8082022Z             }
2026-06-20T11:21:58.8082141Z           ]
2026-06-20T11:21:58.8082252Z         },
2026-06-20T11:21:58.8082355Z         "unit": {
2026-06-20T11:21:58.8082475Z           "complete": false,
2026-06-20T11:21:58.8082580Z           "evidence": []
2026-06-20T11:21:58.8082689Z         }
2026-06-20T11:21:58.8082790Z       }
2026-06-20T11:21:58.8083018Z     },
2026-06-20T11:21:58.8083134Z     {
2026-06-20T11:21:58.8083248Z       "id": "REQ-INSTALL-6",
2026-06-20T11:21:58.8084505Z       "title": "Linux elevation install leg: install.sh symlinks the binary into a sudo-reachable path (/usr/local/bin; graceful print-the-one-liner when unelevated) so sudo spt resolves; first sudo spt detects elevation and prompts ONCE for the default user account — thereafter any elevated daemon launch runs daemon + state under that account, never root (KH 5.7 interplay verified) (M8 decision 8)",
2026-06-20T11:21:58.8084638Z       "requiredStages": [
2026-06-20T11:21:58.8084753Z         "impl",
2026-06-20T11:21:58.8084870Z         "unit"
2026-06-20T11:21:58.8084975Z       ],
2026-06-20T11:21:58.8085099Z       "stages": {
2026-06-20T11:21:58.8085208Z         "doc": {
2026-06-20T11:21:58.8085343Z           "complete": false,
2026-06-20T11:21:58.8085457Z           "evidence": []
2026-06-20T11:21:58.8085575Z         },
2026-06-20T11:21:58.8085695Z         "impl": {
2026-06-20T11:21:58.8085823Z           "complete": true,
2026-06-20T11:21:58.8085943Z           "evidence": [
2026-06-20T11:21:58.8086052Z             {
2026-06-20T11:21:58.8086205Z               "path": "crates/spt-daemon/src/daemon.rs",
2026-06-20T11:21:58.8086330Z               "line": 61
2026-06-20T11:21:58.8086443Z             },
2026-06-20T11:21:58.8086558Z             {
2026-06-20T11:21:58.8086701Z               "path": "crates/spt-daemon/src/daemon.rs",
2026-06-20T11:21:58.8086825Z               "line": 641
2026-06-20T11:21:58.8086941Z             },
2026-06-20T11:21:58.8087058Z             {
2026-06-20T11:21:58.8087210Z               "path": "crates/spt-daemon/src/deelevate.rs",
2026-06-20T11:21:58.8087338Z               "line": 191
2026-06-20T11:21:58.8087451Z             },
2026-06-20T11:21:58.8087565Z             {
2026-06-20T11:21:58.8087709Z               "path": "crates/spt-daemon/src/deelevate.rs",
2026-06-20T11:21:58.8087817Z               "line": 276
2026-06-20T11:21:58.8087928Z             },
2026-06-20T11:21:58.8088042Z             {
2026-06-20T11:21:58.8088171Z               "path": "crates/spt/src/main.rs",
2026-06-20T11:21:58.8088290Z               "line": 43
2026-06-20T11:21:58.8088404Z             },
2026-06-20T11:21:58.8088525Z             {
2026-06-20T11:21:58.8088643Z               "path": "installer/install.sh",
2026-06-20T11:21:58.8088771Z               "line": 104
2026-06-20T11:21:58.8088887Z             }
2026-06-20T11:21:58.8089086Z           ]
2026-06-20T11:21:58.8089211Z         },
2026-06-20T11:21:58.8089315Z         "int": {
2026-06-20T11:21:58.8089469Z           "complete": false,
2026-06-20T11:21:58.8089592Z           "evidence": []
2026-06-20T11:21:58.8089702Z         },
2026-06-20T11:21:58.8089818Z         "unit": {
2026-06-20T11:21:58.8089949Z           "complete": true,
2026-06-20T11:21:58.8090067Z           "evidence": [
2026-06-20T11:21:58.8090173Z             {
2026-06-20T11:21:58.8090320Z               "path": "crates/spt-daemon/src/deelevate.rs",
2026-06-20T11:21:58.8090450Z               "line": 894
2026-06-20T11:21:58.8093831Z             }
2026-06-20T11:21:58.8093966Z           ]
2026-06-20T11:21:58.8094084Z         }
2026-06-20T11:21:58.8094212Z       }
2026-06-20T11:21:58.8094319Z     },
2026-06-20T11:21:58.8094436Z     {
2026-06-20T11:21:58.8094566Z       "id": "REQ-INSTALL-7",
2026-06-20T11:21:58.8095922Z       "title": "Windows inbound reachability: the elevated install leg registers the inbound-UDP firewall rule (New-NetFirewallRule); the daemon self-detects blocked inbound and renders it as the no-connection state in subnet status + the coming-online banner (covers user-scope installs that skip the elevated leg — never a silent NO_SEED_HOLDER dead-end) (M8 root cause 3)",
2026-06-20T11:21:58.8096054Z       "requiredStages": [
2026-06-20T11:21:58.8096174Z         "impl"
2026-06-20T11:21:58.8096293Z       ],
2026-06-20T11:21:58.8096412Z       "stages": {
2026-06-20T11:21:58.8096532Z         "doc": {
2026-06-20T11:21:58.8096655Z           "complete": false,
2026-06-20T11:21:58.8096886Z           "evidence": []
2026-06-20T11:21:58.8096998Z         },
2026-06-20T11:21:58.8097113Z         "impl": {
2026-06-20T11:21:58.8097233Z           "complete": true,
2026-06-20T11:21:58.8097351Z           "evidence": [
2026-06-20T11:21:58.8097458Z             {
2026-06-20T11:21:58.8097585Z               "path": "crates/spt/src/cli.rs",
2026-06-20T11:21:58.8097713Z               "line": 3920
2026-06-20T11:21:58.8097823Z             },
2026-06-20T11:21:58.8097935Z             {
2026-06-20T11:21:58.8098063Z               "path": "installer/install.ps1",
2026-06-20T11:21:58.8098188Z               "line": 157
2026-06-20T11:21:58.8098302Z             }
2026-06-20T11:21:58.8098412Z           ]
2026-06-20T11:21:58.8098536Z         },
2026-06-20T11:21:58.8098654Z         "int": {
2026-06-20T11:21:58.8098780Z           "complete": false,
2026-06-20T11:21:58.8098898Z           "evidence": []
2026-06-20T11:21:58.8099094Z         },
2026-06-20T11:21:58.8099217Z         "unit": {
2026-06-20T11:21:58.8099336Z           "complete": false,
2026-06-20T11:21:58.8099480Z           "evidence": []
2026-06-20T11:21:58.8099603Z         }
2026-06-20T11:21:58.8099709Z       }
2026-06-20T11:21:58.8099813Z     },
2026-06-20T11:21:58.8099918Z     {
2026-06-20T11:21:58.8100043Z       "id": "REQ-INSTALL-8",
2026-06-20T11:21:58.8101119Z       "title": "OS-service registration (REQ-INSTALL-1's deferred third leg): Linux systemd USER service + loginctl enable-linger (linger rides the elevated install leg; daemon starts at boot pre-login, user universe per KH 5.7, systemctl --user managed); Windows scheduled task at-logon (interactive session, no stored credentials); a node is reachable after reboot without any manual spt invocation (M8 decision 17)",
2026-06-20T11:21:58.8101252Z       "requiredStages": [
2026-06-20T11:21:58.8101367Z         "impl"
2026-06-20T11:21:58.8101477Z       ],
2026-06-20T11:21:58.8101596Z       "stages": {
2026-06-20T11:21:58.8101710Z         "doc": {
2026-06-20T11:21:58.8101829Z           "complete": false,
2026-06-20T11:21:58.8101954Z           "evidence": []
2026-06-20T11:21:58.8102059Z         },
2026-06-20T11:21:58.8102178Z         "impl": {
2026-06-20T11:21:58.8102284Z           "complete": true,
2026-06-20T11:21:58.8102402Z           "evidence": [
2026-06-20T11:21:58.8102511Z             {
2026-06-20T11:21:58.8102641Z               "path": "installer/install.ps1",
2026-06-20T11:21:58.8102759Z               "line": 184
2026-06-20T11:21:58.8102863Z             },
2026-06-20T11:21:58.8102972Z             {
2026-06-20T11:21:58.8103099Z               "path": "installer/install.sh",
2026-06-20T11:21:58.8103218Z               "line": 121
2026-06-20T11:21:58.8103324Z             }
2026-06-20T11:21:58.8103437Z           ]
2026-06-20T11:21:58.8103542Z         },
2026-06-20T11:21:58.8103658Z         "int": {
2026-06-20T11:21:58.8103780Z           "complete": false,
2026-06-20T11:21:58.8103896Z           "evidence": []
2026-06-20T11:21:58.8104020Z         },
2026-06-20T11:21:58.8104128Z         "unit": {
2026-06-20T11:21:58.8104259Z           "complete": false,
2026-06-20T11:21:58.8104382Z           "evidence": []
2026-06-20T11:21:58.8104501Z         }
2026-06-20T11:21:58.8104611Z       }
2026-06-20T11:21:58.8104720Z     },
2026-06-20T11:21:58.8104826Z     {
2026-06-20T11:21:58.8104954Z       "id": "REQ-INSTALL-9",
2026-06-20T11:21:58.8106362Z       "title": "Adapter add from a GitHub release archive: `spt adapter add --release <user/repo> [--tag <tag>] [--asset <name>]` fetches a `.spt` tar asset over HTTPS+GitHub trust, extracts it to the durable adapters/_github home, and registers the root — ships built binaries source-free and versioned (the distribution path for an adapter whose dev repo is a monorepo subdir, where --github root-only clone does not fit)",
2026-06-20T11:21:58.8106497Z       "requiredStages": [
2026-06-20T11:21:58.8106610Z         "doc",
2026-06-20T11:21:58.8106724Z         "impl",
2026-06-20T11:21:58.8106835Z         "unit"
2026-06-20T11:21:58.8106948Z       ],
2026-06-20T11:21:58.8107164Z       "stages": {
2026-06-20T11:21:58.8107282Z         "doc": {
2026-06-20T11:21:58.8107402Z           "complete": true,
2026-06-20T11:21:58.8107507Z           "evidence": [
2026-06-20T11:21:58.8107630Z             {
2026-06-20T11:21:58.8107755Z               "path": "CONTEXT.md",
2026-06-20T11:21:58.8107878Z               "line": 771
2026-06-20T11:21:58.8108003Z             }
2026-06-20T11:21:58.8108118Z           ]
2026-06-20T11:21:58.8108225Z         },
2026-06-20T11:21:58.8108345Z         "impl": {
2026-06-20T11:21:58.8108463Z           "complete": true,
2026-06-20T11:21:58.8108571Z           "evidence": [
2026-06-20T11:21:58.8108695Z             {
2026-06-20T11:21:58.8108834Z               "path": "crates/spt/src/cli.rs",
2026-06-20T11:21:58.8109030Z               "line": 2535
2026-06-20T11:21:58.8109139Z             },
2026-06-20T11:21:58.8109243Z             {
2026-06-20T11:21:58.8109382Z               "path": "crates/spt/src/cli.rs",
2026-06-20T11:21:58.8109505Z               "line": 2559
2026-06-20T11:21:58.8109630Z             }
2026-06-20T11:21:58.8109735Z           ]
2026-06-20T11:21:58.8109839Z         },
2026-06-20T11:21:58.8109950Z         "int": {
2026-06-20T11:21:58.8110068Z           "complete": false,
2026-06-20T11:21:58.8110192Z           "evidence": []
2026-06-20T11:21:58.8110298Z         },
2026-06-20T11:21:58.8110421Z         "unit": {
2026-06-20T11:21:58.8110540Z           "complete": true,
2026-06-20T11:21:58.8110656Z           "evidence": [
2026-06-20T11:21:58.8110764Z             {
2026-06-20T11:21:58.8110895Z               "path": "crates/spt/src/cli.rs",
2026-06-20T11:21:58.8111013Z               "line": 7591
2026-06-20T11:21:58.8111121Z             },
2026-06-20T11:21:58.8111240Z             {
2026-06-20T11:21:58.8111374Z               "path": "crates/spt/src/cli.rs",
2026-06-20T11:21:58.8111483Z               "line": 8433
2026-06-20T11:21:58.8111589Z             }
2026-06-20T11:21:58.8111694Z           ]
2026-06-20T11:21:58.8111802Z         }
2026-06-20T11:21:58.8111909Z       }
2026-06-20T11:21:58.8112018Z     },
2026-06-20T11:21:58.8112127Z     {
2026-06-20T11:21:58.8112247Z       "id": "REQ-KICK-1",
2026-06-20T11:21:58.8114790Z       "title": "Explicit, loud controller displacement: `spt rc kick <target>` / `--take` (Take intent) kicks the incumbent controller and becomes controller; the displaced controller receives a LOUD `Displaced{by}` notice and is FULLY DETACHED (not demoted to a viewer). A default attach to a controlled endpoint is NEVER a silent displace (it is the Control busy-refusal). An old (N-1) rc omits intent → Control, so it can drive a free endpoint but CANNOT `--take` — it can never silently steal, and gets a clean busy-refusal instead. Taking control rides the same access_check(endpoint, origin, Unsolicited) as a normal control attach (if you may drive, you may take — no elevated kick policy). The picker surfaces 'Kick <node> and attach' (Take) only on a controlled (blue ■) endpoint, via the existing attach dispatch (single-bringup-path: intent is a parameter).",
2026-06-20T11:21:58.8114923Z       "requiredStages": [
2026-06-20T11:21:58.8115033Z         "doc",
2026-06-20T11:21:58.8115162Z         "impl",
2026-06-20T11:21:58.8115266Z         "unit",
2026-06-20T11:21:58.8115376Z         "int"
2026-06-20T11:21:58.8115481Z       ],
2026-06-20T11:21:58.8115586Z       "stages": {
2026-06-20T11:21:58.8115885Z         "doc": {
2026-06-20T11:21:58.8116011Z           "complete": true,
2026-06-20T11:21:58.8116139Z           "evidence": [
2026-06-20T11:21:58.8116247Z             {
2026-06-20T11:21:58.8116381Z               "path": "CONTEXT.md",
2026-06-20T11:21:58.8116508Z               "line": 342
2026-06-20T11:21:58.8116617Z             }
2026-06-20T11:21:58.8116732Z           ]
2026-06-20T11:21:58.8116837Z         },
2026-06-20T11:21:58.8116951Z         "impl": {
2026-06-20T11:21:58.8117076Z           "complete": true,
2026-06-20T11:21:58.8117199Z           "evidence": [
2026-06-20T11:21:58.8117319Z             {
2026-06-20T11:21:58.8117467Z               "path": "crates/spt-net/src/net/attach.rs",
2026-06-20T11:21:58.8117686Z               "line": 41
2026-06-20T11:21:58.8117800Z             },
2026-06-20T11:21:58.8117919Z             {
2026-06-20T11:21:58.8118044Z               "path": "crates/spt/src/rc.rs",
2026-06-20T11:21:58.8118162Z               "line": 701
2026-06-20T11:21:58.8118282Z             }
2026-06-20T11:21:58.8118387Z           ]
2026-06-20T11:21:58.8118505Z         },
2026-06-20T11:21:58.8118616Z         "int": {
2026-06-20T11:21:58.8118739Z           "complete": true,
2026-06-20T11:21:58.8118852Z           "evidence": [
2026-06-20T11:21:58.8119047Z             {
2026-06-20T11:21:58.8119202Z               "path": "crates/spt-daemon/tests/attach.rs",
2026-06-20T11:21:58.8119318Z               "line": 913
2026-06-20T11:21:58.8119441Z             }
2026-06-20T11:21:58.8119556Z           ]
2026-06-20T11:21:58.8119675Z         },
2026-06-20T11:21:58.8119784Z         "unit": {
2026-06-20T11:21:58.8119900Z           "complete": true,
2026-06-20T11:21:58.8120028Z           "evidence": [
2026-06-20T11:21:58.8120137Z             {
2026-06-20T11:21:58.8120286Z               "path": "crates/spt-net/src/net/attach.rs",
2026-06-20T11:21:58.8120394Z               "line": 205
2026-06-20T11:21:58.8120519Z             }
2026-06-20T11:21:58.8120624Z           ]
2026-06-20T11:21:58.8120728Z         }
2026-06-20T11:21:58.8120849Z       }
2026-06-20T11:21:58.8120957Z     },
2026-06-20T11:21:58.8121067Z     {
2026-06-20T11:21:58.8121188Z       "id": "REQ-MANIFEST-1",
2026-06-20T11:21:58.8121406Z       "title": "Per-adapter manifest with adapter_name and min_spt_core_version",
2026-06-20T11:21:58.8121526Z       "requiredStages": [
2026-06-20T11:21:58.8121633Z         "doc",
2026-06-20T11:21:58.8121747Z         "impl",
2026-06-20T11:21:58.8121858Z         "unit"
2026-06-20T11:21:58.8121977Z       ],
2026-06-20T11:21:58.8122081Z       "stages": {
2026-06-20T11:21:58.8122187Z         "doc": {
2026-06-20T11:21:58.8122301Z           "complete": true,
2026-06-20T11:21:58.8122411Z           "evidence": [
2026-06-20T11:21:58.8122535Z             {
2026-06-20T11:21:58.8122663Z               "path": "docs/MANIFEST.md",
2026-06-20T11:21:58.8122784Z               "line": 19
2026-06-20T11:21:58.8122897Z             }
2026-06-20T11:21:58.8123021Z           ]
2026-06-20T11:21:58.8123123Z         },
2026-06-20T11:21:58.8123250Z         "impl": {
2026-06-20T11:21:58.8123384Z           "complete": true,
2026-06-20T11:21:58.8123494Z           "evidence": [
2026-06-20T11:21:58.8123603Z             {
2026-06-20T11:21:58.8123752Z               "path": "crates/spt-runtime/src/manifest.rs",
2026-06-20T11:21:58.8123869Z               "line": 18
2026-06-20T11:21:58.8123969Z             }
2026-06-20T11:21:58.8124084Z           ]
2026-06-20T11:21:58.8124196Z         },
2026-06-20T11:21:58.8124309Z         "int": {
2026-06-20T11:21:58.8124435Z           "complete": false,
2026-06-20T11:21:58.8124558Z           "evidence": []
2026-06-20T11:21:58.8124663Z         },
2026-06-20T11:21:58.8124769Z         "unit": {
2026-06-20T11:21:58.8124901Z           "complete": true,
2026-06-20T11:21:58.8125022Z           "evidence": [
2026-06-20T11:21:58.8125121Z             {
2026-06-20T11:21:58.8125263Z               "path": "crates/spt-runtime/src/manifest.rs",
2026-06-20T11:21:58.8125374Z               "line": 1029
2026-06-20T11:21:58.8125492Z             },
2026-06-20T11:21:58.8125712Z             {
2026-06-20T11:21:58.8125865Z               "path": "crates/spt-runtime/src/manifest.rs",
2026-06-20T11:21:58.8125980Z               "line": 1325
2026-06-20T11:21:58.8126089Z             },
2026-06-20T11:21:58.8126207Z             {
2026-06-20T11:21:58.8126347Z               "path": "crates/spt-runtime/src/manifest.rs",
2026-06-20T11:21:58.8126470Z               "line": 1337
2026-06-20T11:21:58.8126585Z             },
2026-06-20T11:21:58.8126704Z             {
2026-06-20T11:21:58.8126860Z               "path": "crates/spt-runtime/src/manifest.rs",
2026-06-20T11:21:58.8126974Z               "line": 1348
2026-06-20T11:21:58.8127082Z             },
2026-06-20T11:21:58.8127292Z             {
2026-06-20T11:21:58.8127444Z               "path": "crates/spt-runtime/src/manifest.rs",
2026-06-20T11:21:58.8127559Z               "line": 1365
2026-06-20T11:21:58.8127683Z             },
2026-06-20T11:21:58.8127796Z             {
2026-06-20T11:21:58.8127936Z               "path": "crates/spt-runtime/src/manifest.rs",
2026-06-20T11:21:58.8128064Z               "line": 1379
2026-06-20T11:21:58.8128164Z             },
2026-06-20T11:21:58.8128275Z             {
2026-06-20T11:21:58.8128412Z               "path": "crates/spt-runtime/src/manifest.rs",
2026-06-20T11:21:58.8128532Z               "line": 1495
2026-06-20T11:21:58.8128641Z             },
2026-06-20T11:21:58.8128746Z             {
2026-06-20T11:21:58.8128890Z               "path": "crates/spt-runtime/src/manifest.rs",
2026-06-20T11:21:58.8129079Z               "line": 1510
2026-06-20T11:21:58.8129200Z             },
2026-06-20T11:21:58.8129313Z             {
2026-06-20T11:21:58.8129465Z               "path": "crates/spt-runtime/src/manifest.rs",
2026-06-20T11:21:58.8129579Z               "line": 1621
2026-06-20T11:21:58.8129691Z             },
2026-06-20T11:21:58.8129811Z             {
2026-06-20T11:21:58.8129954Z               "path": "crates/spt-runtime/src/manifest.rs",
2026-06-20T11:21:58.8130068Z               "line": 1632
2026-06-20T11:21:58.8130193Z             }
2026-06-20T11:21:58.8130311Z           ]
2026-06-20T11:21:58.8130436Z         }
2026-06-20T11:21:58.8130545Z       }
2026-06-20T11:21:58.8130654Z     },
2026-06-20T11:21:58.8130770Z     {
2026-06-20T11:21:58.8130888Z       "id": "REQ-MANIFEST-2",
2026-06-20T11:21:58.8131414Z       "title": "Adapter profiles — sparse leaf-replace overlays (shipped + local), composite <adapter>:<profile> addressing, shadow-refusal, tighten-only consent floors",
2026-06-20T11:21:58.8131541Z       "requiredStages": [
2026-06-20T11:21:58.8131656Z         "doc",
2026-06-20T11:21:58.8131772Z         "impl",
2026-06-20T11:21:58.8131899Z         "unit"
2026-06-20T11:21:58.8132015Z       ],
2026-06-20T11:21:58.8132138Z       "stages": {
2026-06-20T11:21:58.8132261Z         "doc": {
2026-06-20T11:21:58.8132370Z           "complete": true,
2026-06-20T11:21:58.8132481Z           "evidence": [
2026-06-20T11:21:58.8132584Z             {
2026-06-20T11:21:58.8132704Z               "path": "CONTEXT.md",
2026-06-20T11:21:58.8132828Z               "line": 75
2026-06-20T11:21:58.8132947Z             }
2026-06-20T11:21:58.8133053Z           ]
2026-06-20T11:21:58.8133162Z         },
2026-06-20T11:21:58.8133281Z         "impl": {
2026-06-20T11:21:58.8133391Z           "complete": true,
2026-06-20T11:21:58.8133509Z           "evidence": [
2026-06-20T11:21:58.8133620Z             {
2026-06-20T11:21:58.8133772Z               "path": "crates/spt-runtime/src/manifest.rs",
2026-06-20T11:21:58.8133896Z               "line": 82
2026-06-20T11:21:58.8133997Z             },
2026-06-20T11:21:58.8134100Z             {
2026-06-20T11:21:58.8134234Z               "path": "crates/spt-runtime/src/profile.rs",
2026-06-20T11:21:58.8134355Z               "line": 15
2026-06-20T11:21:58.8134463Z             },
2026-06-20T11:21:58.8134586Z             {
2026-06-20T11:21:58.8134728Z               "path": "crates/spt-runtime/src/profile.rs",
2026-06-20T11:21:58.8134832Z               "line": 65
2026-06-20T11:21:58.8134942Z             },
2026-06-20T11:21:58.8135156Z             {
2026-06-20T11:21:58.8135295Z               "path": "crates/spt-runtime/src/profile.rs",
2026-06-20T11:21:58.8135404Z               "line": 83
2026-06-20T11:21:58.8135523Z             },
2026-06-20T11:21:58.8135643Z             {
2026-06-20T11:21:58.8135771Z               "path": "crates/spt-runtime/src/profile.rs",
2026-06-20T11:21:58.8135882Z               "line": 183
2026-06-20T11:21:58.8136001Z             },
2026-06-20T11:21:58.8136119Z             {
2026-06-20T11:21:58.8136258Z               "path": "crates/spt-runtime/src/registry.rs",
2026-06-20T11:21:58.8136372Z               "line": 527
2026-06-20T11:21:58.8136477Z             },
2026-06-20T11:21:58.8136687Z             {
2026-06-20T11:21:58.8136845Z               "path": "crates/spt-runtime/src/registry.rs",
2026-06-20T11:21:58.8136958Z               "line": 553
2026-06-20T11:21:58.8137078Z             },
2026-06-20T11:21:58.8137189Z             {
2026-06-20T11:21:58.8137335Z               "path": "crates/spt-runtime/src/registry.rs",
2026-06-20T11:21:58.8137449Z               "line": 671
2026-06-20T11:21:58.8137558Z             },
2026-06-20T11:21:58.8137671Z             {
2026-06-20T11:21:58.8137814Z               "path": "crates/spt-runtime/src/registry.rs",
2026-06-20T11:21:58.8137938Z               "line": 696
2026-06-20T11:21:58.8138046Z             },
2026-06-20T11:21:58.8138157Z             {
2026-06-20T11:21:58.8138309Z               "path": "crates/spt-runtime/src/registry.rs",
2026-06-20T11:21:58.8138419Z               "line": 719
2026-06-20T11:21:58.8138524Z             },
2026-06-20T11:21:58.8138633Z             {
2026-06-20T11:21:58.8138783Z               "path": "crates/spt-runtime/src/registry.rs",
2026-06-20T11:21:58.8138901Z               "line": 734
2026-06-20T11:21:58.8139088Z             },
2026-06-20T11:21:58.8139206Z             {
2026-06-20T11:21:58.8139334Z               "path": "crates/spt/src/cli.rs",
2026-06-20T11:21:58.8139474Z               "line": 5567
2026-06-20T11:21:58.8139582Z             },
2026-06-20T11:21:58.8139693Z             {
2026-06-20T11:21:58.8139826Z               "path": "crates/spt/src/cli.rs",
2026-06-20T11:21:58.8139958Z               "line": 5581
2026-06-20T11:21:58.8140068Z             },
2026-06-20T11:21:58.8140181Z             {
2026-06-20T11:21:58.8140304Z               "path": "crates/spt/src/cli.rs",
2026-06-20T11:21:58.8140424Z               "line": 5615
2026-06-20T11:21:58.8140547Z             }
2026-06-20T11:21:58.8140656Z           ]
2026-06-20T11:21:58.8140772Z         },
2026-06-20T11:21:58.8140881Z         "int": {
2026-06-20T11:21:58.8141006Z           "complete": false,
2026-06-20T11:21:58.8141129Z           "evidence": []
2026-06-20T11:21:58.8141247Z         },
2026-06-20T11:21:58.8141358Z         "unit": {
2026-06-20T11:21:58.8141472Z           "complete": true,
2026-06-20T11:21:58.8141596Z           "evidence": [
2026-06-20T11:21:58.8141716Z             {
2026-06-20T11:21:58.8141863Z               "path": "crates/spt-daemon/src/shellwake.rs",
2026-06-20T11:21:58.8141979Z               "line": 921
2026-06-20T11:21:58.8142083Z             },
2026-06-20T11:21:58.8142187Z             {
2026-06-20T11:21:58.8142332Z               "path": "crates/spt-runtime/src/profile.rs",
2026-06-20T11:21:58.8142444Z               "line": 211
2026-06-20T11:21:58.8142560Z             },
2026-06-20T11:21:58.8142670Z             {
2026-06-20T11:21:58.8142811Z               "path": "crates/spt-runtime/src/profile.rs",
2026-06-20T11:21:58.8142926Z               "line": 272
2026-06-20T11:21:58.8143027Z             },
2026-06-20T11:21:58.8143144Z             {
2026-06-20T11:21:58.8143289Z               "path": "crates/spt-runtime/src/profile.rs",
2026-06-20T11:21:58.8143398Z               "line": 313
2026-06-20T11:21:58.8143507Z             },
2026-06-20T11:21:58.8143618Z             {
2026-06-20T11:21:58.8143750Z               "path": "crates/spt-runtime/src/profile.rs",
2026-06-20T11:21:58.8143865Z               "line": 325
2026-06-20T11:21:58.8143979Z             },
2026-06-20T11:21:58.8144209Z             {
2026-06-20T11:21:58.8144361Z               "path": "crates/spt-runtime/src/profile.rs",
2026-06-20T11:21:58.8144470Z               "line": 336
2026-06-20T11:21:58.8144581Z             },
2026-06-20T11:21:58.8144694Z             {
2026-06-20T11:21:58.8144839Z               "path": "crates/spt-runtime/src/profile.rs",
2026-06-20T11:21:58.8144957Z               "line": 345
2026-06-20T11:21:58.8145061Z             },
2026-06-20T11:21:58.8145180Z             {
2026-06-20T11:21:58.8145320Z               "path": "crates/spt-runtime/src/profile.rs",
2026-06-20T11:21:58.8145439Z               "line": 361
2026-06-20T11:21:58.8145550Z             },
2026-06-20T11:21:58.8145769Z             {
2026-06-20T11:21:58.8145912Z               "path": "crates/spt-runtime/src/profile.rs",
2026-06-20T11:21:58.8146036Z               "line": 444
2026-06-20T11:21:58.8146156Z             },
2026-06-20T11:21:58.8146270Z             {
2026-06-20T11:21:58.8146418Z               "path": "crates/spt-runtime/src/registry.rs",
2026-06-20T11:21:58.8146532Z               "line": 958
2026-06-20T11:21:58.8146646Z             },
2026-06-20T11:21:58.8146761Z             {
2026-06-20T11:21:58.8146899Z               "path": "crates/spt-runtime/src/registry.rs",
2026-06-20T11:21:58.8147018Z               "line": 982
2026-06-20T11:21:58.8147120Z             },
2026-06-20T11:21:58.8147242Z             {
2026-06-20T11:21:58.8147372Z               "path": "crates/spt-runtime/src/registry.rs",
2026-06-20T11:21:58.8147486Z               "line": 1008
2026-06-20T11:21:58.8147609Z             },
2026-06-20T11:21:58.8147715Z             {
2026-06-20T11:21:58.8147861Z               "path": "crates/spt-runtime/src/registry.rs",
2026-06-20T11:21:58.8147975Z               "line": 1027
2026-06-20T11:21:58.8148085Z             },
2026-06-20T11:21:58.8148192Z             {
2026-06-20T11:21:58.8148336Z               "path": "crates/spt-runtime/src/registry.rs",
2026-06-20T11:21:58.8148456Z               "line": 1058
2026-06-20T11:21:58.8148564Z             },
2026-06-20T11:21:58.8148669Z             {
2026-06-20T11:21:58.8148818Z               "path": "crates/spt-store/src/shellinfo.rs",
2026-06-20T11:21:58.8148935Z               "line": 309
2026-06-20T11:21:58.8149118Z             },
2026-06-20T11:21:58.8149222Z             {
2026-06-20T11:21:58.8149362Z               "path": "crates/spt/src/api/mod.rs",
2026-06-20T11:21:58.8149485Z               "line": 606
2026-06-20T11:21:58.8149604Z             },
2026-06-20T11:21:58.8149704Z             {
2026-06-20T11:21:58.8149837Z               "path": "crates/spt/src/cli.rs",
2026-06-20T11:21:58.8149958Z               "line": 8610
2026-06-20T11:21:58.8150062Z             },
2026-06-20T11:21:58.8150186Z             {
2026-06-20T11:21:58.8150311Z               "path": "crates/spt/src/cli.rs",
2026-06-20T11:21:58.8150433Z               "line": 9558
2026-06-20T11:21:58.8150547Z             }
2026-06-20T11:21:58.8150656Z           ]
2026-06-20T11:21:58.8150764Z         }
2026-06-20T11:21:58.8150878Z       }
2026-06-20T11:21:58.8151003Z     },
2026-06-20T11:21:58.8151108Z     {
2026-06-20T11:21:58.8151236Z       "id": "REQ-MANIFEST-3",
2026-06-20T11:21:58.8151904Z       "title": "Adapter strings — [strings] KV tree, dot-path get-string resolving through the profile leaf-replace overlay, set-string editing a local profile's [strings] only; data-only (nothing executes a string)",
2026-06-20T11:21:58.8152027Z       "requiredStages": [
2026-06-20T11:21:58.8152147Z         "doc",
2026-06-20T11:21:58.8152257Z         "impl",
2026-06-20T11:21:58.8152366Z         "unit"
2026-06-20T11:21:58.8152466Z       ],
2026-06-20T11:21:58.8152586Z       "stages": {
2026-06-20T11:21:58.8152700Z         "doc": {
2026-06-20T11:21:58.8152815Z           "complete": true,
2026-06-20T11:21:58.8152934Z           "evidence": [
2026-06-20T11:21:58.8153044Z             {
2026-06-20T11:21:58.8153169Z               "path": "CONTEXT.md",
2026-06-20T11:21:58.8153272Z               "line": 81
2026-06-20T11:21:58.8153376Z             }
2026-06-20T11:21:58.8153587Z           ]
2026-06-20T11:21:58.8153714Z         },
2026-06-20T11:21:58.8153820Z         "impl": {
2026-06-20T11:21:58.8153944Z           "complete": true,
2026-06-20T11:21:58.8154067Z           "evidence": [
2026-06-20T11:21:58.8154168Z             {
2026-06-20T11:21:58.8154315Z               "path": "crates/spt-runtime/src/manifest.rs",
2026-06-20T11:21:58.8154435Z               "line": 92
2026-06-20T11:21:58.8154545Z             },
2026-06-20T11:21:58.8154663Z             {
2026-06-20T11:21:58.8154798Z               "path": "crates/spt-runtime/src/profile.rs",
2026-06-20T11:21:58.8154921Z               "line": 101
2026-06-20T11:21:58.8155026Z             },
2026-06-20T11:21:58.8155244Z             {
2026-06-20T11:21:58.8155384Z               "path": "crates/spt-runtime/src/profile.rs",
2026-06-20T11:21:58.8155517Z               "line": 132
2026-06-20T11:21:58.8155640Z             },
2026-06-20T11:21:58.8155754Z             {
2026-06-20T11:21:58.8155904Z               "path": "crates/spt-runtime/src/registry.rs",
2026-06-20T11:21:58.8156024Z               "line": 577
2026-06-20T11:21:58.8156139Z             },
2026-06-20T11:21:58.8156247Z             {
2026-06-20T11:21:58.8156391Z               "path": "crates/spt-runtime/src/registry.rs",
2026-06-20T11:21:58.8156511Z               "line": 633
2026-06-20T11:21:58.8156615Z             },
2026-06-20T11:21:58.8156731Z             {
2026-06-20T11:21:58.8156858Z               "path": "crates/spt/src/cli.rs",
2026-06-20T11:21:58.8156983Z               "line": 5628
2026-06-20T11:21:58.8157106Z             },
2026-06-20T11:21:58.8157210Z             {
2026-06-20T11:21:58.8157345Z               "path": "crates/spt/src/cli.rs",
2026-06-20T11:21:58.8157459Z               "line": 5654
2026-06-20T11:21:58.8157578Z             }
2026-06-20T11:21:58.8157684Z           ]
2026-06-20T11:21:58.8157807Z         },
2026-06-20T11:21:58.8157927Z         "int": {
2026-06-20T11:21:58.8158032Z           "complete": false,
2026-06-20T11:21:58.8158155Z           "evidence": []
2026-06-20T11:21:58.8158266Z         },
2026-06-20T11:21:58.8158384Z         "unit": {
2026-06-20T11:21:58.8158507Z           "complete": true,
2026-06-20T11:21:58.8158631Z           "evidence": [
2026-06-20T11:21:58.8158739Z             {
2026-06-20T11:21:58.8158876Z               "path": "crates/spt-runtime/src/profile.rs",
2026-06-20T11:21:58.8159077Z               "line": 371
2026-06-20T11:21:58.8159172Z             },
2026-06-20T11:21:58.8159283Z             {
2026-06-20T11:21:58.8159444Z               "path": "crates/spt-runtime/src/profile.rs",
2026-06-20T11:21:58.8159564Z               "line": 429
2026-06-20T11:21:58.8159668Z             },
2026-06-20T11:21:58.8159787Z             {
2026-06-20T11:21:58.8159927Z               "path": "crates/spt-runtime/src/registry.rs",
2026-06-20T11:21:58.8160045Z               "line": 1082
2026-06-20T11:21:58.8160149Z             },
2026-06-20T11:21:58.8160260Z             {
2026-06-20T11:21:58.8160388Z               "path": "crates/spt/src/cli.rs",
2026-06-20T11:21:58.8160513Z               "line": 8703
2026-06-20T11:21:58.8160622Z             }
2026-06-20T11:21:58.8160736Z           ]
2026-06-20T11:21:58.8160847Z         }
2026-06-20T11:21:58.8160970Z       }
2026-06-20T11:21:58.8161078Z     },
2026-06-20T11:21:58.8161203Z     {
2026-06-20T11:21:58.8161324Z       "id": "REQ-MANIFEST-4",
2026-06-20T11:21:58.8162058Z       "title": "Keyword hints — [[hints]] {keywords (literal/regex), text}; spt api hint --session emits at most one matched hint per message, once per session (seen-set), declaration-order first match; profiles overlay [[hints]] by leaf-replace",
2026-06-20T11:21:58.8162187Z       "requiredStages": [
2026-06-20T11:21:58.8162306Z         "doc",
2026-06-20T11:21:58.8162421Z         "impl",
2026-06-20T11:21:58.8162526Z         "unit"
2026-06-20T11:21:58.8162640Z       ],
2026-06-20T11:21:58.8162755Z       "stages": {
2026-06-20T11:21:58.8162865Z         "doc": {
2026-06-20T11:21:58.8162988Z           "complete": true,
2026-06-20T11:21:58.8163099Z           "evidence": [
2026-06-20T11:21:58.8163326Z             {
2026-06-20T11:21:58.8163447Z               "path": "CONTEXT.md",
2026-06-20T11:21:58.8163565Z               "line": 88
2026-06-20T11:21:58.8163681Z             }
2026-06-20T11:21:58.8163786Z           ]
2026-06-20T11:21:58.8163908Z         },
2026-06-20T11:21:58.8164007Z         "impl": {
2026-06-20T11:21:58.8164132Z           "complete": true,
2026-06-20T11:21:58.8164241Z           "evidence": [
2026-06-20T11:21:58.8164361Z             {
2026-06-20T11:21:58.8164509Z               "path": "crates/spt-runtime/src/manifest.rs",
2026-06-20T11:21:58.8164622Z               "line": 100
2026-06-20T11:21:58.8164733Z             },
2026-06-20T11:21:58.8164932Z             {
2026-06-20T11:21:58.8165081Z               "path": "crates/spt-runtime/src/manifest.rs",
2026-06-20T11:21:58.8165195Z               "line": 183
2026-06-20T11:21:58.8165310Z             },
2026-06-20T11:21:58.8165429Z             {
2026-06-20T11:21:58.8165571Z               "path": "crates/spt-store/src/perch.rs",
2026-06-20T11:21:58.8165682Z               "line": 83
2026-06-20T11:21:58.8165791Z             },
2026-06-20T11:21:58.8165901Z             {
2026-06-20T11:21:58.8166040Z               "path": "crates/spt/src/api/reporting.rs",
2026-06-20T11:21:58.8166147Z               "line": 629
2026-06-20T11:21:58.8166262Z             },
2026-06-20T11:21:58.8166376Z             {
2026-06-20T11:21:58.8166517Z               "path": "crates/spt/src/api/reporting.rs",
2026-06-20T11:21:58.8166632Z               "line": 654
2026-06-20T11:21:58.8166751Z             }
2026-06-20T11:21:58.8166870Z           ]
2026-06-20T11:21:58.8166981Z         },
2026-06-20T11:21:58.8167104Z         "int": {
2026-06-20T11:21:58.8167218Z           "complete": false,
2026-06-20T11:21:58.8167333Z           "evidence": []
2026-06-20T11:21:58.8167437Z         },
2026-06-20T11:21:58.8167548Z         "unit": {
2026-06-20T11:21:58.8167671Z           "complete": true,
2026-06-20T11:21:58.8167794Z           "evidence": [
2026-06-20T11:21:58.8167915Z             {
2026-06-20T11:21:58.8168053Z               "path": "crates/spt-runtime/src/manifest.rs",
2026-06-20T11:21:58.8168162Z               "line": 1445
2026-06-20T11:21:58.8168259Z             },
2026-06-20T11:21:58.8168372Z             {
2026-06-20T11:21:58.8168507Z               "path": "crates/spt-runtime/src/manifest.rs",
2026-06-20T11:21:58.8168616Z               "line": 1478
2026-06-20T11:21:58.8168720Z             },
2026-06-20T11:21:58.8168831Z             {
2026-06-20T11:21:58.8169058Z               "path": "crates/spt/src/api/reporting.rs",
2026-06-20T11:21:58.8169172Z               "line": 988
2026-06-20T11:21:58.8169290Z             }
2026-06-20T11:21:58.8169398Z           ]
2026-06-20T11:21:58.8169504Z         }
2026-06-20T11:21:58.8169614Z       }
2026-06-20T11:21:58.8169723Z     },
2026-06-20T11:21:58.8169824Z     {
2026-06-20T11:21:58.8169943Z       "id": "REQ-MANIFEST-5",
2026-06-20T11:21:58.8172876Z       "title": "File-backed adapter [strings] (M12-W3-T3.1): a [strings] dot-path value MAY be an inline-table FILE POINTER `key = { file = \"rel/path\" }` resolved to the file's contents at get-string time, keeping large bodies (skill-instructions, hint text) out of the manifest. A value-position table with a `file` key IS the pointer form (reserved — cannot double as data). Per-adapter aux storage `adapters/<adapter>/strings/`; pointers resolve relative to it with CONTAINMENT (reject `..`/absolute escaping the dir). UPDATE-SAFETY: a LOCAL profile's file-pointers resolve relative to the user-owned local-profile dir (NOT adapter-shipped strings/, which adapter updates overwrite), or the local profile inlines. Validate-at-register (fail-fast on a bad/escaping/missing pointer) + LAZY read at get-string (live file edits reflect, no re-register) + skip-diagnostics on missing-at-read (no hard-crash, mirrors [digest]). Rides the same leaf-replace profile overlay as the rest of [strings].",
2026-06-20T11:21:58.8173020Z       "requiredStages": [
2026-06-20T11:21:58.8173138Z         "doc",
2026-06-20T11:21:58.8173368Z         "impl",
2026-06-20T11:21:58.8173491Z         "unit"
2026-06-20T11:21:58.8173601Z       ],
2026-06-20T11:21:58.8173734Z       "stages": {
2026-06-20T11:21:58.8173849Z         "doc": {
2026-06-20T11:21:58.8173979Z           "complete": true,
2026-06-20T11:21:58.8174111Z           "evidence": [
2026-06-20T11:21:58.8174216Z             {
2026-06-20T11:21:58.8174341Z               "path": "CONTEXT.md",
2026-06-20T11:21:58.8174463Z               "line": 83
2026-06-20T11:21:58.8174563Z             }
2026-06-20T11:21:58.8174674Z           ]
2026-06-20T11:21:58.8174783Z         },
2026-06-20T11:21:58.8174906Z         "impl": {
2026-06-20T11:21:58.8175144Z           "complete": true,
2026-06-20T11:21:58.8175269Z           "evidence": [
2026-06-20T11:21:58.8175384Z             {
2026-06-20T11:21:58.8175527Z               "path": "crates/spt-runtime/src/profile.rs",
2026-06-20T11:21:58.8175646Z               "line": 120
2026-06-20T11:21:58.8175760Z             }
2026-06-20T11:21:58.8175885Z           ]
2026-06-20T11:21:58.8175998Z         },
2026-06-20T11:21:58.8176117Z         "int": {
2026-06-20T11:21:58.8176233Z           "complete": false,
2026-06-20T11:21:58.8176360Z           "evidence": []
2026-06-20T11:21:58.8176466Z         },
2026-06-20T11:21:58.8176586Z         "unit": {
2026-06-20T11:21:58.8176703Z           "complete": true,
2026-06-20T11:21:58.8176817Z           "evidence": [
2026-06-20T11:21:58.8176927Z             {
2026-06-20T11:21:58.8177072Z               "path": "crates/spt-runtime/src/profile.rs",
2026-06-20T11:21:58.8177196Z               "line": 404
2026-06-20T11:21:58.8177306Z             },
2026-06-20T11:21:58.8177415Z             {
2026-06-20T11:21:58.8177569Z               "path": "crates/spt-runtime/src/registry.rs",
2026-06-20T11:21:58.8177678Z               "line": 1155
2026-06-20T11:21:58.8177788Z             },
2026-06-20T11:21:58.8177893Z             {
2026-06-20T11:21:58.8178040Z               "path": "crates/spt-runtime/src/registry.rs",
2026-06-20T11:21:58.8178160Z               "line": 1184
2026-06-20T11:21:58.8178275Z             },
2026-06-20T11:21:58.8178379Z             {
2026-06-20T11:21:58.8178509Z               "path": "crates/spt-runtime/src/registry.rs",
2026-06-20T11:21:58.8178632Z               "line": 1224
2026-06-20T11:21:58.8178742Z             },
2026-06-20T11:21:58.8178847Z             {
2026-06-20T11:21:58.8179067Z               "path": "crates/spt-runtime/src/registry.rs",
2026-06-20T11:21:58.8179181Z               "line": 1239
2026-06-20T11:21:58.8179290Z             }
2026-06-20T11:21:58.8179410Z           ]
2026-06-20T11:21:58.8179514Z         }
2026-06-20T11:21:58.8179623Z       }
2026-06-20T11:21:58.8179737Z     },
2026-06-20T11:21:58.8179841Z     {
2026-06-20T11:21:58.8179963Z       "id": "REQ-MANIFEST-6",
2026-06-20T11:21:58.8182118Z       "title": "Cross-adapter fallback target addressing (M12-W3-T3.2): a cross-adapter fallback target is addressed as `<adapter>:<profile>` (not just a bare adapter_name), resolved through the one composite-addressing resolver (registry::resolve_option) at every adapter-option read site so a fallback may select a shipped/local profile (e.g. a `ccs` profile). CONTEXT.md §cross-adapter-fallback reconciled (\"ccs is a profile; cross-adapter fallback may target <adapter>:<profile>\"). Contract-only this milestone: the node-wide fallback SETTING + its rate-limit invocation are deferred to the consuming milestone (the runtime path does not exist yet); this REQ guarantees the ADDRESSING resolves.",
2026-06-20T11:21:58.8182256Z       "requiredStages": [
2026-06-20T11:21:58.8182370Z         "doc",
2026-06-20T11:21:58.8182483Z         "unit"
2026-06-20T11:21:58.8182578Z       ],
2026-06-20T11:21:58.8182703Z       "stages": {
2026-06-20T11:21:58.8182821Z         "doc": {
2026-06-20T11:21:58.8182941Z           "complete": true,
2026-06-20T11:21:58.8183051Z           "evidence": [
2026-06-20T11:21:58.8183159Z             {
2026-06-20T11:21:58.8183285Z               "path": "CONTEXT.md",
2026-06-20T11:21:58.8183507Z               "line": 141
2026-06-20T11:21:58.8183627Z             }
2026-06-20T11:21:58.8183741Z           ]
2026-06-20T11:21:58.8183856Z         },
2026-06-20T11:21:58.8183980Z         "impl": {
2026-06-20T11:21:58.8184094Z           "complete": false,
2026-06-20T11:21:58.8184215Z           "evidence": []
2026-06-20T11:21:58.8184323Z         },
2026-06-20T11:21:58.8184443Z         "int": {
2026-06-20T11:21:58.8184558Z           "complete": false,
2026-06-20T11:21:58.8184685Z           "evidence": []
2026-06-20T11:21:58.8184801Z         },
2026-06-20T11:21:58.8184897Z         "unit": {
2026-06-20T11:21:58.8185023Z           "complete": true,
2026-06-20T11:21:58.8185238Z           "evidence": [
2026-06-20T11:21:58.8185352Z             {
2026-06-20T11:21:58.8185495Z               "path": "crates/spt-runtime/src/registry.rs",
2026-06-20T11:21:58.8185624Z               "line": 1261
2026-06-20T11:21:58.8188711Z             }
2026-06-20T11:21:58.8188839Z           ]
2026-06-20T11:21:58.8189049Z         }
2026-06-20T11:21:58.8189182Z       }
2026-06-20T11:21:58.8189283Z     },
2026-06-20T11:21:58.8189402Z     {
2026-06-20T11:21:58.8189563Z       "id": "REQ-MANIFEST-7",
2026-06-20T11:21:58.8192669Z       "title": "Adapter-declared shortcut basename (M12-W2 follow-on): an optional `[adapter] shortcut_basename` manifest field names the basename the `spt endpoint run` picker bakes into the generated `<basename>-<id>` launcher shortcut (REQ-RUN-SHORTCUT). Absent ⇒ the harness-agnostic default `spt` (→ `spt-<id>`); an adapter sets it to brand its shortcuts (claude-spt → `cc` → `cc-<id>`), so the Claude-Code-ness lives in the PUBLISHED adapter manifest, never hardcoded in spt-core. The picker reads it from the RESOLVED manifest of the selected adapter (registry::resolve_option), falling back to `spt` when absent/empty/unresolvable. Additive + N-1-safe (serde-default Option, omitted from serialization when absent; old manifests parse clean); manifest.schema.json regenerated from the derive (ADR-0001, CI drift-gated). Documented in docs/MANIFEST.md `[adapter]` section + the claude-spt worked example — the adapter-author contract perri builds spt-claude-code against.",
2026-06-20T11:21:58.8192811Z       "requiredStages": [
2026-06-20T11:21:58.8192921Z         "doc",
2026-06-20T11:21:58.8193043Z         "impl",
2026-06-20T11:21:58.8193167Z         "unit"
2026-06-20T11:21:58.8193268Z       ],
2026-06-20T11:21:58.8193390Z       "stages": {
2026-06-20T11:21:58.8193496Z         "doc": {
2026-06-20T11:21:58.8193621Z           "complete": true,
2026-06-20T11:21:58.8193739Z           "evidence": [
2026-06-20T11:21:58.8193854Z             {
2026-06-20T11:21:58.8193986Z               "path": "docs/MANIFEST.md",
2026-06-20T11:21:58.8194112Z               "line": 35
2026-06-20T11:21:58.8194225Z             }
2026-06-20T11:21:58.8194339Z           ]
2026-06-20T11:21:58.8194450Z         },
2026-06-20T11:21:58.8194563Z         "impl": {
2026-06-20T11:21:58.8194688Z           "complete": true,
2026-06-20T11:21:58.8194803Z           "evidence": [
2026-06-20T11:21:58.8194911Z             {
2026-06-20T11:21:58.8195061Z               "path": "crates/spt/src/picker/data.rs",
2026-06-20T11:21:58.8195175Z               "line": 54
2026-06-20T11:21:58.8195288Z             }
2026-06-20T11:21:58.8195395Z           ]
2026-06-20T11:21:58.8195517Z         },
2026-06-20T11:21:58.8195621Z         "int": {
2026-06-20T11:21:58.8195736Z           "complete": false,
2026-06-20T11:21:58.8195860Z           "evidence": []
2026-06-20T11:21:58.8195969Z         },
2026-06-20T11:21:58.8196085Z         "unit": {
2026-06-20T11:21:58.8196208Z           "complete": true,
2026-06-20T11:21:58.8196337Z           "evidence": [
2026-06-20T11:21:58.8196461Z             {
2026-06-20T11:21:58.8196613Z               "path": "crates/spt-runtime/src/manifest.rs",
2026-06-20T11:21:58.8196742Z               "line": 1638
2026-06-20T11:21:58.8196856Z             }
2026-06-20T11:21:58.8196976Z           ]
2026-06-20T11:21:58.8197090Z         }
2026-06-20T11:21:58.8197209Z       }
2026-06-20T11:21:58.8197476Z     },
2026-06-20T11:21:58.8197595Z     {
2026-06-20T11:21:58.8197729Z       "id": "REQ-MANIFEST-8",
2026-06-20T11:21:58.8200028Z       "title": "[adapter] host_binaries declares the harness executable basenames a kind=\"harness\" adapter hosts agents inside (e.g. host_binaries = [\"claude\"]); bind-time pid→exe-basename match (case-insensitive, .exe-stripped) over the seed's parent_pid selects the candidate adapter set; zero matches → a friendly error naming the binary + the --adapter escape hatch. Additive + N-1-safe: optional Vec<String>, #[serde(default, skip_serializing_if = \"Vec::is_empty\")] (omitted-serialized like shortcut_basename, old manifests parse clean); manifest.schema.json regenerated from the derive (ADR-0001, CI drift-gated). The match-key for ADR-0021 adapter-agnostic bind-time resolution. (v0.9.0)",
2026-06-20T11:21:58.8200263Z       "requiredStages": [
2026-06-20T11:21:58.8200386Z         "doc",
2026-06-20T11:21:58.8200492Z         "impl",
2026-06-20T11:21:58.8200616Z         "unit",
2026-06-20T11:21:58.8200728Z         "int"
2026-06-20T11:21:58.8200838Z       ],
2026-06-20T11:21:58.8200951Z       "stages": {
2026-06-20T11:21:58.8201064Z         "doc": {
2026-06-20T11:21:58.8201189Z           "complete": true,
2026-06-20T11:21:58.8201299Z           "evidence": [
2026-06-20T11:21:58.8201407Z             {
2026-06-20T11:21:58.8201533Z               "path": "CONTEXT.md",
2026-06-20T11:21:58.8201637Z               "line": 184
2026-06-20T11:21:58.8201756Z             },
2026-06-20T11:21:58.8201857Z             {
2026-06-20T11:21:58.8201980Z               "path": "docs/MANIFEST.md",
2026-06-20T11:21:58.8202099Z               "line": 46
2026-06-20T11:21:58.8202219Z             }
2026-06-20T11:21:58.8202319Z           ]
2026-06-20T11:21:58.8202434Z         },
2026-06-20T11:21:58.8202548Z         "impl": {
2026-06-20T11:21:58.8202657Z           "complete": true,
2026-06-20T11:21:58.8202782Z           "evidence": [
2026-06-20T11:21:58.8202891Z             {
2026-06-20T11:21:58.8203054Z               "path": "crates/spt-runtime/src/resolve.rs",
2026-06-20T11:21:58.8203173Z               "line": 222
2026-06-20T11:21:58.8203290Z             },
2026-06-20T11:21:58.8203400Z             {
2026-06-20T11:21:58.8203537Z               "path": "crates/spt-store/src/proc.rs",
2026-06-20T11:21:58.8203660Z               "line": 306
2026-06-20T11:21:58.8203760Z             }
2026-06-20T11:21:58.8203885Z           ]
2026-06-20T11:21:58.8203993Z         },
2026-06-20T11:21:58.8204100Z         "int": {
2026-06-20T11:21:58.8204223Z           "complete": true,
2026-06-20T11:21:58.8204347Z           "evidence": [
2026-06-20T11:21:58.8204466Z             {
2026-06-20T11:21:58.8204623Z               "path": "crates/spt/tests/live_resolve_e2e.rs",
2026-06-20T11:21:58.8204739Z               "line": 18
2026-06-20T11:21:58.8204857Z             }
2026-06-20T11:21:58.8204966Z           ]
2026-06-20T11:21:58.8205082Z         },
2026-06-20T11:21:58.8205191Z         "unit": {
2026-06-20T11:21:58.8205311Z           "complete": true,
2026-06-20T11:21:58.8205425Z           "evidence": [
2026-06-20T11:21:58.8205529Z             {
2026-06-20T11:21:58.8205683Z               "path": "crates/spt-runtime/src/manifest.rs",
2026-06-20T11:21:58.8205805Z               "line": 1656
2026-06-20T11:21:58.8205921Z             },
2026-06-20T11:21:58.8206036Z             {
2026-06-20T11:21:58.8206186Z               "path": "crates/spt-runtime/src/resolve.rs",
2026-06-20T11:21:58.8206291Z               "line": 316
2026-06-20T11:21:58.8206407Z             },
2026-06-20T11:21:58.8206525Z             {
2026-06-20T11:21:58.8206664Z               "path": "crates/spt-runtime/src/resolve.rs",
2026-06-20T11:21:58.8206782Z               "line": 332
2026-06-20T11:21:58.8206887Z             },
2026-06-20T11:21:58.8206992Z             {
2026-06-20T11:21:58.8207135Z               "path": "crates/spt-runtime/src/resolve.rs",
2026-06-20T11:21:58.8207250Z               "line": 345
2026-06-20T11:21:58.8207369Z             },
2026-06-20T11:21:58.8207478Z             {
2026-06-20T11:21:58.8207722Z               "path": "crates/spt-store/src/proc.rs",
2026-06-20T11:21:58.8207841Z               "line": 422
2026-06-20T11:21:58.8207961Z             },
2026-06-20T11:21:58.8208074Z             {
2026-06-20T11:21:58.8208199Z               "path": "crates/spt-store/src/proc.rs",
2026-06-20T11:21:58.8208326Z               "line": 436
2026-06-20T11:21:58.8208426Z             }
2026-06-20T11:21:58.8208536Z           ]
2026-06-20T11:21:58.8208644Z         }
2026-06-20T11:21:58.8208757Z       }
2026-06-20T11:21:58.8208863Z     },
2026-06-20T11:21:58.8209053Z     {
2026-06-20T11:21:58.8209182Z       "id": "REQ-MESH-1",
2026-06-20T11:21:58.8211446Z       "title": "Membership proof (seed-proof): symmetric current-epoch seed-knowledge replaces is_trusted at EVERY inbound gate (registry apply, WAN receive, sync, notif, connection accept). MK = HKDF(seed, domain ‖ subnet_id ‖ seed_epoch); mutual channel-bound challenge-response at connect (transcript binds both handshake-proven node pubkeys, both nonces, subnet_id, seed_epoch, role); verified once per connection, cached on the broker ConnEntry, kept warm via QUIC keep-alive so re-proof is restart/partition/rotation-only. Exact-epoch match (re-seed is the sole N-1 exception). SECURITY INVARIANTS: channel-bound (no cross-connection replay), mutual, accepts a member it never paired (the mesh property).",
2026-06-20T11:21:58.8211568Z       "requiredStages": [
2026-06-20T11:21:58.8211687Z         "impl",
2026-06-20T11:21:58.8211793Z         "unit",
2026-06-20T11:21:58.8211902Z         "int"
2026-06-20T11:21:58.8212011Z       ],
2026-06-20T11:21:58.8212131Z       "stages": {
2026-06-20T11:21:58.8212240Z         "doc": {
2026-06-20T11:21:58.8212370Z           "complete": false,
2026-06-20T11:21:58.8212493Z           "evidence": []
2026-06-20T11:21:58.8212597Z         },
2026-06-20T11:21:58.8212713Z         "impl": {
2026-06-20T11:21:58.8212831Z           "complete": true,
2026-06-20T11:21:58.8212950Z           "evidence": [
2026-06-20T11:21:58.8213061Z             {
2026-06-20T11:21:58.8213208Z               "path": "crates/spt-daemon/src/nethost.rs",
2026-06-20T11:21:58.8213319Z               "line": 922
2026-06-20T11:21:58.8213423Z             },
2026-06-20T11:21:58.8213533Z             {
2026-06-20T11:21:58.8213676Z               "path": "crates/spt-daemon/src/seedproofx.rs",
2026-06-20T11:21:58.8213804Z               "line": 38
2026-06-20T11:21:58.8213912Z             },
2026-06-20T11:21:58.8214022Z             {
2026-06-20T11:21:58.8214177Z               "path": "crates/spt-daemon/src/seedproofx.rs",
2026-06-20T11:21:58.8214287Z               "line": 161
2026-06-20T11:21:58.8214407Z             },
2026-06-20T11:21:58.8214515Z             {
2026-06-20T11:21:58.8214665Z               "path": "crates/spt-daemon/src/seedproofx.rs",
2026-06-20T11:21:58.8214783Z               "line": 206
2026-06-20T11:21:58.8214892Z             },
2026-06-20T11:21:58.8214998Z             {
2026-06-20T11:21:58.8215135Z               "path": "crates/spt-net/src/net/endpoint.rs",
2026-06-20T11:21:58.8215260Z               "line": 57
2026-06-20T11:21:58.8215360Z             },
2026-06-20T11:21:58.8215474Z             {
2026-06-20T11:21:58.8215632Z               "path": "crates/spt-net/src/net/mesh/seedproof.rs",
2026-06-20T11:21:58.8215751Z               "line": 24
2026-06-20T11:21:58.8215861Z             },
2026-06-20T11:21:58.8215975Z             {
2026-06-20T11:21:58.8216123Z               "path": "crates/spt-net/src/net/mesh/seedproof.rs",
2026-06-20T11:21:58.8216238Z               "line": 142
2026-06-20T11:21:58.8216346Z             },
2026-06-20T11:21:58.8216457Z             {
2026-06-20T11:21:58.8216610Z               "path": "crates/spt-net/src/net/mesh/seedproof.rs",
2026-06-20T11:21:58.8216727Z               "line": 162
2026-06-20T11:21:58.8216832Z             }
2026-06-20T11:21:58.8216953Z           ]
2026-06-20T11:21:58.8217056Z         },
2026-06-20T11:21:58.8217180Z         "int": {
2026-06-20T11:21:58.8217310Z           "complete": true,
2026-06-20T11:21:58.8217553Z           "evidence": [
2026-06-20T11:21:58.8217662Z             {
2026-06-20T11:21:58.8217810Z               "path": "crates/spt-daemon/tests/seedproofx.rs",
2026-06-20T11:21:58.8217929Z               "line": 67
2026-06-20T11:21:58.8218043Z             },
2026-06-20T11:21:58.8218154Z             {
2026-06-20T11:21:58.8218301Z               "path": "crates/spt-daemon/tests/seedproofx.rs",
2026-06-20T11:21:58.8218406Z               "line": 93
2026-06-20T11:21:58.8218526Z             },
2026-06-20T11:21:58.8218630Z             {
2026-06-20T11:21:58.8218774Z               "path": "crates/spt-daemon/tests/seedproofx.rs",
2026-06-20T11:21:58.8218882Z               "line": 117
2026-06-20T11:21:58.8219162Z             },
2026-06-20T11:21:58.8219285Z             {
2026-06-20T11:21:58.8219442Z               "path": "crates/spt-daemon/tests/seedproofx.rs",
2026-06-20T11:21:58.8219561Z               "line": 134
2026-06-20T11:21:58.8219670Z             }
2026-06-20T11:21:58.8219781Z           ]
2026-06-20T11:21:58.8219909Z         },
2026-06-20T11:21:58.8220024Z         "unit": {
2026-06-20T11:21:58.8220138Z           "complete": true,
2026-06-20T11:21:58.8220252Z           "evidence": [
2026-06-20T11:21:58.8220358Z             {
2026-06-20T11:21:58.8220501Z               "path": "crates/spt-net/src/net/endpoint.rs",
2026-06-20T11:21:58.8220634Z               "line": 427
2026-06-20T11:21:58.8220754Z             },
2026-06-20T11:21:58.8220862Z             {
2026-06-20T11:21:58.8221012Z               "path": "crates/spt-net/src/net/mesh/seedproof.rs",
2026-06-20T11:21:58.8221125Z               "line": 376
2026-06-20T11:21:58.8221239Z             },
2026-06-20T11:21:58.8221351Z             {
2026-06-20T11:21:58.8221506Z               "path": "crates/spt-net/src/net/mesh/seedproof.rs",
2026-06-20T11:21:58.8221627Z               "line": 412
2026-06-20T11:21:58.8221736Z             },
2026-06-20T11:21:58.8221849Z             {
2026-06-20T11:21:58.8221987Z               "path": "crates/spt-net/src/net/mesh/seedproof.rs",
2026-06-20T11:21:58.8222095Z               "line": 427
2026-06-20T11:21:58.8222203Z             },
2026-06-20T11:21:58.8222324Z             {
2026-06-20T11:21:58.8222476Z               "path": "crates/spt-net/src/net/mesh/seedproof.rs",
2026-06-20T11:21:58.8222585Z               "line": 438
2026-06-20T11:21:58.8222705Z             },
2026-06-20T11:21:58.8222805Z             {
2026-06-20T11:21:58.8222968Z               "path": "crates/spt-net/src/net/mesh/seedproof.rs",
2026-06-20T11:21:58.8223072Z               "line": 449
2026-06-20T11:21:58.8223181Z             },
2026-06-20T11:21:58.8223296Z             {
2026-06-20T11:21:58.8223434Z               "path": "crates/spt-net/src/net/mesh/seedproof.rs",
2026-06-20T11:21:58.8223554Z               "line": 460
2026-06-20T11:21:58.8223663Z             },
2026-06-20T11:21:58.8223773Z             {
2026-06-20T11:21:58.8223922Z               "path": "crates/spt-net/src/net/mesh/seedproof.rs",
2026-06-20T11:21:58.8224035Z               "line": 496
2026-06-20T11:21:58.8224145Z             },
2026-06-20T11:21:58.8224251Z             {
2026-06-20T11:21:58.8224406Z               "path": "crates/spt-net/src/net/mesh/seedproof.rs",
2026-06-20T11:21:58.8224511Z               "line": 519
2026-06-20T11:21:58.8224634Z             },
2026-06-20T11:21:58.8224746Z             {
2026-06-20T11:21:58.8224895Z               "path": "crates/spt-net/src/net/mesh/seedproof.rs",
2026-06-20T11:21:58.8225009Z               "line": 546
2026-06-20T11:21:58.8225137Z             }
2026-06-20T11:21:58.8225249Z           ]
2026-06-20T11:21:58.8225352Z         }
2026-06-20T11:21:58.8225472Z       }
2026-06-20T11:21:58.8225587Z     },
2026-06-20T11:21:58.8225696Z     {
2026-06-20T11:21:58.8225821Z       "id": "REQ-MESH-2",
2026-06-20T11:21:58.8228452Z       "title": "Member roster: node-level union-merge grow-set (per member: pubkey, label, machine_id, last-known address, last-seen — NOT the seed), the discovery directory the mesh dials by. Seeded IN FULL at pairing (seed-holder hands joiner the whole current roster, incl. offline members — folds in deferred pairing-time hostname capture + post-join address seeding); each node authors its own entry stamped with its lease_epoch, merged strictly-greater-wins (the node_label lease); exchanged only over seed-proof'd member connections; forgery-inert (a fake entry names a pubkey that still can't seed-proof). Removal needs a TOMBSTONE — a per-pubkey revoked marker that propagates, dominates the entry, gates admission (seed-proof ∧ ¬tombstoned), and prevents reinsert; cleared by a completed re-pair of that pubkey. Persists through silence (offline member keeps its entry).",
2026-06-20T11:21:58.8228699Z       "requiredStages": [
2026-06-20T11:21:58.8228903Z         "impl",
2026-06-20T11:21:58.8229091Z         "unit",
2026-06-20T11:21:58.8229200Z         "int"
2026-06-20T11:21:58.8229310Z       ],
2026-06-20T11:21:58.8229471Z       "stages": {
2026-06-20T11:21:58.8229579Z         "doc": {
2026-06-20T11:21:58.8229694Z           "complete": false,
2026-06-20T11:21:58.8229821Z           "evidence": []
2026-06-20T11:21:58.8229930Z         },
2026-06-20T11:21:58.8230055Z         "impl": {
2026-06-20T11:21:58.8230168Z           "complete": true,
2026-06-20T11:21:58.8230283Z           "evidence": [
2026-06-20T11:21:58.8230403Z             {
2026-06-20T11:21:58.8230540Z               "path": "crates/spt-daemon/src/nethost.rs",
2026-06-20T11:21:58.8230661Z               "line": 757
2026-06-20T11:21:58.8230770Z             },
2026-06-20T11:21:58.8230884Z             {
2026-06-20T11:21:58.8231032Z               "path": "crates/spt-daemon/src/pairhost.rs",
2026-06-20T11:21:58.8231151Z               "line": 118
2026-06-20T11:21:58.8231266Z             },
2026-06-20T11:21:58.8231375Z             {
2026-06-20T11:21:58.8231523Z               "path": "crates/spt-daemon/src/pairhost.rs",
2026-06-20T11:21:58.8231629Z               "line": 347
2026-06-20T11:21:58.8231738Z             },
2026-06-20T11:21:58.8231843Z             {
2026-06-20T11:21:58.8231981Z               "path": "crates/spt-daemon/src/pairhost.rs",
2026-06-20T11:21:58.8232105Z               "line": 389
2026-06-20T11:21:58.8232216Z             },
2026-06-20T11:21:58.8232319Z             {
2026-06-20T11:21:58.8232451Z               "path": "crates/spt-daemon/src/pairhost.rs",
2026-06-20T11:21:58.8232557Z               "line": 403
2026-06-20T11:21:58.8232669Z             },
2026-06-20T11:21:58.8232778Z             {
2026-06-20T11:21:58.8232927Z               "path": "crates/spt-daemon/src/pairhost.rs",
2026-06-20T11:21:58.8233036Z               "line": 492
2026-06-20T11:21:58.8233141Z             },
2026-06-20T11:21:58.8233251Z             {
2026-06-20T11:21:58.8233398Z               "path": "crates/spt-daemon/src/pairhost.rs",
2026-06-20T11:21:58.8233514Z               "line": 507
2026-06-20T11:21:58.8233618Z             },
2026-06-20T11:21:58.8233727Z             {
2026-06-20T11:21:58.8233871Z               "path": "crates/spt-daemon/src/pairhost.rs",
2026-06-20T11:21:58.8233999Z               "line": 534
2026-06-20T11:21:58.8234119Z             },
2026-06-20T11:21:58.8234237Z             {
2026-06-20T11:21:58.8234385Z               "path": "crates/spt-daemon/src/seedproofx.rs",
2026-06-20T11:21:58.8234491Z               "line": 207
2026-06-20T11:21:58.8234604Z             },
2026-06-20T11:21:58.8234715Z             {
2026-06-20T11:21:58.8234872Z               "path": "crates/spt-daemon/src/seedproofx.rs",
2026-06-20T11:21:58.8234975Z               "line": 755
2026-06-20T11:21:58.8235085Z             },
2026-06-20T11:21:58.8235203Z             {
2026-06-20T11:21:58.8235335Z               "path": "crates/spt-daemon/src/seedproofx.rs",
2026-06-20T11:21:58.8235446Z               "line": 816
2026-06-20T11:21:58.8235560Z             },
2026-06-20T11:21:58.8235674Z             {
2026-06-20T11:21:58.8235818Z               "path": "crates/spt-daemon/src/seedproofx.rs",
2026-06-20T11:21:58.8235941Z               "line": 869
2026-06-20T11:21:58.8236057Z             },
2026-06-20T11:21:58.8236166Z             {
2026-06-20T11:21:58.8236308Z               "path": "crates/spt-daemon/src/seedproofx.rs",
2026-06-20T11:21:58.8236533Z               "line": 891
2026-06-20T11:21:58.8236637Z             },
2026-06-20T11:21:58.8236748Z             {
2026-06-20T11:21:58.8236900Z               "path": "crates/spt-store/src/perch.rs",
2026-06-20T11:21:58.8237030Z               "line": 122
2026-06-20T11:21:58.8237129Z             },
2026-06-20T11:21:58.8237238Z             {
2026-06-20T11:21:58.8237363Z               "path": "crates/spt-store/src/roster.rs",
2026-06-20T11:21:58.8237476Z               "line": 44
2026-06-20T11:21:58.8237577Z             },
2026-06-20T11:21:58.8237692Z             {
2026-06-20T11:21:58.8237833Z               "path": "crates/spt-store/src/roster.rs",
2026-06-20T11:21:58.8238044Z               "line": 184
2026-06-20T11:21:58.8238162Z             },
2026-06-20T11:21:58.8238267Z             {
2026-06-20T11:21:58.8238411Z               "path": "crates/spt-store/src/roster.rs",
2026-06-20T11:21:58.8238529Z               "line": 211
2026-06-20T11:21:58.8238635Z             },
2026-06-20T11:21:58.8238745Z             {
2026-06-20T11:21:58.8238878Z               "path": "crates/spt-store/src/roster.rs",
2026-06-20T11:21:58.8239073Z               "line": 251
2026-06-20T11:21:58.8239173Z             },
2026-06-20T11:21:58.8239289Z             {
2026-06-20T11:21:58.8239445Z               "path": "crates/spt-store/src/roster.rs",
2026-06-20T11:21:58.8239561Z               "line": 275
2026-06-20T11:21:58.8239688Z             },
2026-06-20T11:21:58.8239802Z             {
2026-06-20T11:21:58.8239937Z               "path": "crates/spt-store/src/roster.rs",
2026-06-20T11:21:58.8240045Z               "line": 289
2026-06-20T11:21:58.8240158Z             },
2026-06-20T11:21:58.8240283Z             {
2026-06-20T11:21:58.8240414Z               "path": "crates/spt-store/src/roster.rs",
2026-06-20T11:21:58.8240534Z               "line": 300
2026-06-20T11:21:58.8240640Z             },
2026-06-20T11:21:58.8240757Z             {
2026-06-20T11:21:58.8240892Z               "path": "crates/spt-store/src/roster.rs",
2026-06-20T11:21:58.8241006Z               "line": 313
2026-06-20T11:21:58.8241110Z             }
2026-06-20T11:21:58.8241216Z           ]
2026-06-20T11:21:58.8241330Z         },
2026-06-20T11:21:58.8241444Z         "int": {
2026-06-20T11:21:58.8241573Z           "complete": true,
2026-06-20T11:21:58.8241691Z           "evidence": [
2026-06-20T11:21:58.8241807Z             {
2026-06-20T11:21:58.8241965Z               "path": "crates/spt-daemon/tests/rosterprop.rs",
2026-06-20T11:21:58.8242074Z               "line": 116
2026-06-20T11:21:58.8242185Z             },
2026-06-20T11:21:58.8242288Z             {
2026-06-20T11:21:58.8242442Z               "path": "crates/spt-daemon/tests/rosterprop.rs",
2026-06-20T11:21:58.8242551Z               "line": 181
2026-06-20T11:21:58.8242674Z             }
2026-06-20T11:21:58.8242795Z           ]
2026-06-20T11:21:58.8242903Z         },
2026-06-20T11:21:58.8243030Z         "unit": {
2026-06-20T11:21:58.8243155Z           "complete": true,
2026-06-20T11:21:58.8243281Z           "evidence": [
2026-06-20T11:21:58.8243396Z             {
2026-06-20T11:21:58.8243540Z               "path": "crates/spt-daemon/src/seedproofx.rs",
2026-06-20T11:21:58.8243658Z               "line": 999
2026-06-20T11:21:58.8243769Z             },
2026-06-20T11:21:58.8243873Z             {
2026-06-20T11:21:58.8244021Z               "path": "crates/spt-daemon/src/seedproofx.rs",
2026-06-20T11:21:58.8244135Z               "line": 1016
2026-06-20T11:21:58.8244239Z             },
2026-06-20T11:21:58.8244350Z             {
2026-06-20T11:21:58.8244502Z               "path": "crates/spt-daemon/src/seedproofx.rs",
2026-06-20T11:21:58.8244612Z               "line": 1024
2026-06-20T11:21:58.8244723Z             },
2026-06-20T11:21:58.8244826Z             {
2026-06-20T11:21:58.8244975Z               "path": "crates/spt-daemon/src/seedproofx.rs",
2026-06-20T11:21:58.8245080Z               "line": 1048
2026-06-20T11:21:58.8245193Z             },
2026-06-20T11:21:58.8245404Z             {
2026-06-20T11:21:58.8245554Z               "path": "crates/spt-net/src/net/pairing/wire.rs",
2026-06-20T11:21:58.8245674Z               "line": 1499
2026-06-20T11:21:58.8245786Z             },
2026-06-20T11:21:58.8245909Z             {
2026-06-20T11:21:58.8246059Z               "path": "crates/spt-store/src/roster.rs",
2026-06-20T11:21:58.8246167Z               "line": 347
2026-06-20T11:21:58.8246282Z             },
2026-06-20T11:21:58.8246383Z             {
2026-06-20T11:21:58.8246525Z               "path": "crates/spt-store/src/roster.rs",
2026-06-20T11:21:58.8246641Z               "line": 370
2026-06-20T11:21:58.8246754Z             },
2026-06-20T11:21:58.8246965Z             {
2026-06-20T11:21:58.8247102Z               "path": "crates/spt-store/src/roster.rs",
2026-06-20T11:21:58.8247212Z               "line": 407
2026-06-20T11:21:58.8247317Z             },
2026-06-20T11:21:58.8247427Z             {
2026-06-20T11:21:58.8247561Z               "path": "crates/spt-store/src/roster.rs",
2026-06-20T11:21:58.8247684Z               "line": 431
2026-06-20T11:21:58.8247812Z             },
2026-06-20T11:21:58.8247919Z             {
2026-06-20T11:21:58.8248065Z               "path": "crates/spt-store/src/roster.rs",
2026-06-20T11:21:58.8248171Z               "line": 483
2026-06-20T11:21:58.8248276Z             },
2026-06-20T11:21:58.8248394Z             {
2026-06-20T11:21:58.8248542Z               "path": "crates/spt-store/src/roster.rs",
2026-06-20T11:21:58.8248656Z               "line": 499
2026-06-20T11:21:58.8248774Z             },
2026-06-20T11:21:58.8248895Z             {
2026-06-20T11:21:58.8249103Z               "path": "crates/spt-store/src/roster.rs",
2026-06-20T11:21:58.8249233Z               "line": 514
2026-06-20T11:21:58.8249333Z             },
2026-06-20T11:21:58.8249457Z             {
2026-06-20T11:21:58.8249605Z               "path": "crates/spt-store/src/roster.rs",
2026-06-20T11:21:58.8249709Z               "line": 531
2026-06-20T11:21:58.8249830Z             }
2026-06-20T11:21:58.8249938Z           ]
2026-06-20T11:21:58.8250057Z         }
2026-06-20T11:21:58.8250168Z       }
2026-06-20T11:21:58.8250281Z     },
2026-06-20T11:21:58.8250396Z     {
2026-06-20T11:21:58.8250516Z       "id": "REQ-MESH-3",
2026-06-20T11:21:58.8252214Z       "title": "Mesh row fan-out: registry rows stay OWN-AUTHORED; the only change is the push target widens from directly-paired peers to ALL roster members (a wider DIRECT fan-out, never a third-party relay). Every row/message still arrives from its author over a handshake → KNOWN-HAZARDS 7.5 (origin = handshake node) and 4.10 (eviction lease: any future update comes from that node itself, alive) PRESERVED VERBATIM. Closes the staggered A→B→C repro: C (roster-seeded with A at pairing) initiates to A, seed-proof admits C unpaired, A learns C, both push directly.",
2026-06-20T11:21:58.8252348Z       "requiredStages": [
2026-06-20T11:21:58.8252458Z         "impl",
2026-06-20T11:21:58.8252567Z         "unit",
2026-06-20T11:21:58.8252673Z         "int"
2026-06-20T11:21:58.8252796Z       ],
2026-06-20T11:21:58.8252896Z       "stages": {
2026-06-20T11:21:58.8253007Z         "doc": {
2026-06-20T11:21:58.8253130Z           "complete": false,
2026-06-20T11:21:58.8253244Z           "evidence": []
2026-06-20T11:21:58.8253355Z         },
2026-06-20T11:21:58.8253463Z         "impl": {
2026-06-20T11:21:58.8253581Z           "complete": true,
2026-06-20T11:21:58.8253691Z           "evidence": [
2026-06-20T11:21:58.8253813Z             {
2026-06-20T11:21:58.8253956Z               "path": "crates/spt-daemon/src/pump/mod.rs",
2026-06-20T11:21:58.8254071Z               "line": 641
2026-06-20T11:21:58.8254189Z             }
2026-06-20T11:21:58.8254300Z           ]
2026-06-20T11:21:58.8254424Z         },
2026-06-20T11:21:58.8254537Z         "int": {
2026-06-20T11:21:58.8254663Z           "complete": true,
2026-06-20T11:21:58.8254781Z           "evidence": [
2026-06-20T11:21:58.8254881Z             {
2026-06-20T11:21:58.8255033Z               "path": "crates/spt-daemon/tests/mesh.rs",
2026-06-20T11:21:58.8255292Z               "line": 373
2026-06-20T11:21:58.8255400Z             },
2026-06-20T11:21:58.8255506Z             {
2026-06-20T11:21:58.8255640Z               "path": "crates/spt-daemon/tests/mesh.rs",
2026-06-20T11:21:58.8255758Z               "line": 436
2026-06-20T11:21:58.8255865Z             }
2026-06-20T11:21:58.8255974Z           ]
2026-06-20T11:21:58.8256082Z         },
2026-06-20T11:21:58.8256191Z         "unit": {
2026-06-20T11:21:58.8256305Z           "complete": true,
2026-06-20T11:21:58.8256427Z           "evidence": [
2026-06-20T11:21:58.8256537Z             {
2026-06-20T11:21:58.8256680Z               "path": "crates/spt-daemon/src/pump/mod.rs",
2026-06-20T11:21:58.8256895Z               "line": 910
2026-06-20T11:21:58.8257004Z             }
2026-06-20T11:21:58.8257118Z           ]
2026-06-20T11:21:58.8257233Z         }
2026-06-20T11:21:58.8257352Z       }
2026-06-20T11:21:58.8257472Z     },
2026-06-20T11:21:58.8257581Z     {
2026-06-20T11:21:58.8257705Z       "id": "REQ-MESH-4",
2026-06-20T11:21:58.8260012Z       "title": "Revoke + timeboxed seed rotation + re-seed grace: `spt subnet revoke <node>...` (list, elevation-gated, revoke-only) writes roster tombstones immediately, then schedules ONE seed rotation (re-mint seed, bump seed_epoch, push new seed CONFIDENTIALLY over member-auth'd TLS connections — never in roster/registry gossip — force-drop revokees) at the close of a coalescing window (default 1h); further revokes in the window join the same rotation (one epoch bump). `--force-rotate-seed` rotates immediately (compromised-node path). RE-SEED GRACE: a node proving the immediately-prior epoch (N-1) AND still on the roster gets a re-seed-only restricted connection (auto-heals a benign offliner); revoked/off-roster denied; ≥2 stale → re-pair.",
2026-06-20T11:21:58.8260146Z       "requiredStages": [
2026-06-20T11:21:58.8260260Z         "impl",
2026-06-20T11:21:58.8260371Z         "unit",
2026-06-20T11:21:58.8260484Z         "int"
2026-06-20T11:21:58.8260589Z       ],
2026-06-20T11:21:58.8260705Z       "stages": {
2026-06-20T11:21:58.8260818Z         "doc": {
2026-06-20T11:21:58.8260932Z           "complete": false,
2026-06-20T11:21:58.8261053Z           "evidence": []
2026-06-20T11:21:58.8261170Z         },
2026-06-20T11:21:58.8261279Z         "impl": {
2026-06-20T11:21:58.8261394Z           "complete": true,
2026-06-20T11:21:58.8261515Z           "evidence": [
2026-06-20T11:21:58.8261620Z             {
2026-06-20T11:21:58.8261765Z               "path": "crates/spt-daemon/src/pump/registry.rs",
2026-06-20T11:21:58.8261877Z               "line": 33
2026-06-20T11:21:58.8261988Z             },
2026-06-20T11:21:58.8262098Z             {
2026-06-20T11:21:58.8262254Z               "path": "crates/spt-daemon/src/seedproofx.rs",
2026-06-20T11:21:58.8262379Z               "line": 68
2026-06-20T11:21:58.8262497Z             },
2026-06-20T11:21:58.8262613Z             {
2026-06-20T11:21:58.8262774Z               "path": "crates/spt-daemon/src/seedproofx.rs",
2026-06-20T11:21:58.8262903Z               "line": 111
2026-06-20T11:21:58.8263018Z             },
2026-06-20T11:21:58.8263118Z             {
2026-06-20T11:21:58.8263266Z               "path": "crates/spt-daemon/src/seedproofx.rs",
2026-06-20T11:21:58.8263394Z               "line": 462
2026-06-20T11:21:58.8263489Z             },
2026-06-20T11:21:58.8263610Z             {
2026-06-20T11:21:58.8263752Z               "path": "crates/spt-daemon/src/seedproofx.rs",
2026-06-20T11:21:58.8263872Z               "line": 711
2026-06-20T11:21:58.8263981Z             },
2026-06-20T11:21:58.8264094Z             {
2026-06-20T11:21:58.8264246Z               "path": "crates/spt-daemon/src/seedproofx.rs",
2026-06-20T11:21:58.8264364Z               "line": 725
2026-06-20T11:21:58.8264468Z             },
2026-06-20T11:21:58.8264579Z             {
2026-06-20T11:21:58.8264749Z               "path": "crates/spt-store/src/perch.rs",
2026-06-20T11:21:58.8264884Z               "line": 132
2026-06-20T11:21:58.8265012Z             },
2026-06-20T11:21:58.8265161Z             {
2026-06-20T11:21:58.8265499Z               "path": "crates/spt-store/src/rotation.rs",
2026-06-20T11:21:58.8265627Z               "line": 26
2026-06-20T11:21:58.8265742Z             },
2026-06-20T11:21:58.8265862Z             {
2026-06-20T11:21:58.8266008Z               "path": "crates/spt-store/src/rotation.rs",
2026-06-20T11:21:58.8266119Z               "line": 97
2026-06-20T11:21:58.8266242Z             },
2026-06-20T11:21:58.8266337Z             {
2026-06-20T11:21:58.8266487Z               "path": "crates/spt-store/src/rotation.rs",
2026-06-20T11:21:58.8266599Z               "line": 119
2026-06-20T11:21:58.8266712Z             },
2026-06-20T11:21:58.8266837Z             {
2026-06-20T11:21:58.8267083Z               "path": "crates/spt-store/src/subnet.rs",
2026-06-20T11:21:58.8267194Z               "line": 82
2026-06-20T11:21:58.8267292Z             },
2026-06-20T11:21:58.8267402Z             {
2026-06-20T11:21:58.8267532Z               "path": "crates/spt-store/src/subnet.rs",
2026-06-20T11:21:58.8267655Z               "line": 111
2026-06-20T11:21:58.8267756Z             },
2026-06-20T11:21:58.8267875Z             {
2026-06-20T11:21:58.8268013Z               "path": "crates/spt-store/src/subnet.rs",
2026-06-20T11:21:58.8268109Z               "line": 232
2026-06-20T11:21:58.8268227Z             },
2026-06-20T11:21:58.8268337Z             {
2026-06-20T11:21:58.8268484Z               "path": "crates/spt-store/src/subnet.rs",
2026-06-20T11:21:58.8268604Z               "line": 245
2026-06-20T11:21:58.8268715Z             },
2026-06-20T11:21:58.8268842Z             {
2026-06-20T11:21:58.8269054Z               "path": "crates/spt/src/cli.rs",
2026-06-20T11:21:58.8269195Z               "line": 4665
2026-06-20T11:21:58.8269302Z             }
2026-06-20T11:21:58.8269424Z           ]
2026-06-20T11:21:58.8269538Z         },
2026-06-20T11:21:58.8269652Z         "int": {
2026-06-20T11:21:58.8269776Z           "complete": true,
2026-06-20T11:21:58.8269894Z           "evidence": [
2026-06-20T11:21:58.8270010Z             {
2026-06-20T11:21:58.8270162Z               "path": "crates/spt-daemon/tests/reseed.rs",
2026-06-20T11:21:58.8270277Z               "line": 98
2026-06-20T11:21:58.8270396Z             },
2026-06-20T11:21:58.8270510Z             {
2026-06-20T11:21:58.8270654Z               "path": "crates/spt-daemon/tests/reseed.rs",
2026-06-20T11:21:58.8270773Z               "line": 140
2026-06-20T11:21:58.8270882Z             }
2026-06-20T11:21:58.8270992Z           ]
2026-06-20T11:21:58.8271120Z         },
2026-06-20T11:21:58.8271241Z         "unit": {
2026-06-20T11:21:58.8271359Z           "complete": true,
2026-06-20T11:21:58.8271488Z           "evidence": [
2026-06-20T11:21:58.8271599Z             {
2026-06-20T11:21:58.8271749Z               "path": "crates/spt-daemon/src/pump/registry.rs",
2026-06-20T11:21:58.8271863Z               "line": 178
2026-06-20T11:21:58.8271986Z             },
2026-06-20T11:21:58.8272109Z             {
2026-06-20T11:21:58.8272325Z               "path": "crates/spt-daemon/src/pump/registry.rs",
2026-06-20T11:21:58.8272456Z               "line": 242
2026-06-20T11:21:58.8272582Z             },
2026-06-20T11:21:58.8272691Z             {
2026-06-20T11:21:58.8272839Z               "path": "crates/spt-daemon/src/seedproofx.rs",
2026-06-20T11:21:58.8272949Z               "line": 1079
2026-06-20T11:21:58.8273058Z             },
2026-06-20T11:21:58.8273164Z             {
2026-06-20T11:21:58.8273316Z               "path": "crates/spt-daemon/src/seedproofx.rs",
2026-06-20T11:21:58.8273425Z               "line": 1109
2026-06-20T11:21:58.8273535Z             },
2026-06-20T11:21:58.8273654Z             {
2026-06-20T11:21:58.8273788Z               "path": "crates/spt-daemon/src/seedproofx.rs",
2026-06-20T11:21:58.8273907Z               "line": 1129
2026-06-20T11:21:58.8274021Z             },
2026-06-20T11:21:58.8274137Z             {
2026-06-20T11:21:58.8274288Z               "path": "crates/spt-net/src/net/mesh/seedproof.rs",
2026-06-20T11:21:58.8274408Z               "line": 602
2026-06-20T11:21:58.8274640Z             },
2026-06-20T11:21:58.8274764Z             {
2026-06-20T11:21:58.8274914Z               "path": "crates/spt-store/src/rotation.rs",
2026-06-20T11:21:58.8275019Z               "line": 148
2026-06-20T11:21:58.8275134Z             },
2026-06-20T11:21:58.8275243Z             {
2026-06-20T11:21:58.8275391Z               "path": "crates/spt-store/src/rotation.rs",
2026-06-20T11:21:58.8275501Z               "line": 169
2026-06-20T11:21:58.8275605Z             },
2026-06-20T11:21:58.8275721Z             {
2026-06-20T11:21:58.8275859Z               "path": "crates/spt-store/src/rotation.rs",
2026-06-20T11:21:58.8275982Z               "line": 181
2026-06-20T11:21:58.8276192Z             },
2026-06-20T11:21:58.8276311Z             {
2026-06-20T11:21:58.8276450Z               "path": "crates/spt-store/src/rotation.rs",
2026-06-20T11:21:58.8276559Z               "line": 202
2026-06-20T11:21:58.8276675Z             },
2026-06-20T11:21:58.8276779Z             {
2026-06-20T11:21:58.8276921Z               "path": "crates/spt-store/src/subnet.rs",
2026-06-20T11:21:58.8277023Z               "line": 375
2026-06-20T11:21:58.8277136Z             },
2026-06-20T11:21:58.8277240Z             {
2026-06-20T11:21:58.8277373Z               "path": "crates/spt-store/src/subnet.rs",
2026-06-20T11:21:58.8277500Z               "line": 407
2026-06-20T11:21:58.8277609Z             },
2026-06-20T11:21:58.8277715Z             {
2026-06-20T11:21:58.8277847Z               "path": "crates/spt/src/cli.rs",
2026-06-20T11:21:58.8277963Z               "line": 10052
2026-06-20T11:21:58.8278067Z             }
2026-06-20T11:21:58.8278172Z           ]
2026-06-20T11:21:58.8278297Z         }
2026-06-20T11:21:58.8278411Z       }
2026-06-20T11:21:58.8278529Z     },
2026-06-20T11:21:58.8278640Z     {
2026-06-20T11:21:58.8278759Z       "id": "REQ-MESH-5",
2026-06-20T11:21:58.8280294Z       "title": "Hard cutover from pairwise trust: delete peers.json + the is_trusted authorization path (no migration — expendable test fleet, re-pairs fresh under the new model, user decision 2026-06-08). Warn-on-change DEMOTED from a gate to an awareness notice anchored on machine_id (not label): 'machine M, last seen as K1, now presents K2' — fires the same event as the REQ-SUBNET-7 re-pair overwrite. The TrustStore/peers.json code and its call sites are removed, not left dead.",
2026-06-20T11:21:58.8280417Z       "requiredStages": [
2026-06-20T11:21:58.8280585Z         "impl",
2026-06-20T11:21:58.8280707Z         "unit"
2026-06-20T11:21:58.8280837Z       ],
2026-06-20T11:21:58.8280961Z       "stages": {
2026-06-20T11:21:58.8281070Z         "doc": {
2026-06-20T11:21:58.8281195Z           "complete": false,
2026-06-20T11:21:58.8281323Z           "evidence": []
2026-06-20T11:21:58.8281432Z         },
2026-06-20T11:21:58.8281539Z         "impl": {
2026-06-20T11:21:58.8281648Z           "complete": true,
2026-06-20T11:21:58.8281772Z           "evidence": [
2026-06-20T11:21:58.8281881Z             {
2026-06-20T11:21:58.8282033Z               "path": "crates/spt-daemon/src/notifsync.rs",
2026-06-20T11:21:58.8282150Z               "line": 61
2026-06-20T11:21:58.8282271Z             },
2026-06-20T11:21:58.8282380Z             {
2026-06-20T11:21:58.8282514Z               "path": "crates/spt-daemon/src/notifsync.rs",
2026-06-20T11:21:58.8282641Z               "line": 109
2026-06-20T11:21:58.8282755Z             },
2026-06-20T11:21:58.8282875Z             {
2026-06-20T11:21:58.8283007Z               "path": "crates/spt-daemon/src/pairhost.rs",
2026-06-20T11:21:58.8283132Z               "line": 104
2026-06-20T11:21:58.8283241Z             },
2026-06-20T11:21:58.8283336Z             {
2026-06-20T11:21:58.8283480Z               "path": "crates/spt-daemon/src/propagate.rs",
2026-06-20T11:21:58.8283594Z               "line": 105
2026-06-20T11:21:58.8283699Z             },
2026-06-20T11:21:58.8283814Z             {
2026-06-20T11:21:58.8286752Z               "path": "crates/spt-daemon/src/registryhost.rs",
2026-06-20T11:21:58.8286881Z               "line": 85
2026-06-20T11:21:58.8287001Z             },
2026-06-20T11:21:58.8287264Z             {
2026-06-20T11:21:58.8287419Z               "path": "crates/spt-daemon/src/registryhost.rs",
2026-06-20T11:21:58.8287540Z               "line": 250
2026-06-20T11:21:58.8287654Z             },
2026-06-20T11:21:58.8287767Z             {
2026-06-20T11:21:58.8287919Z               "path": "crates/spt-daemon/src/registryhost.rs",
2026-06-20T11:21:58.8288032Z               "line": 314
2026-06-20T11:21:58.8288150Z             },
2026-06-20T11:21:58.8288256Z             {
2026-06-20T11:21:58.8288398Z               "path": "crates/spt-daemon/src/registryhost.rs",
2026-06-20T11:21:58.8288503Z               "line": 767
2026-06-20T11:21:58.8288736Z             },
2026-06-20T11:21:58.8288852Z             {
2026-06-20T11:21:58.8289080Z               "path": "crates/spt-daemon/src/sync.rs",
2026-06-20T11:21:58.8289205Z               "line": 101
2026-06-20T11:21:58.8289324Z             },
2026-06-20T11:21:58.8289443Z             {
2026-06-20T11:21:58.8289586Z               "path": "crates/spt-store/src/roster.rs",
2026-06-20T11:21:58.8289700Z               "line": 193
2026-06-20T11:21:58.8289820Z             }
2026-06-20T11:21:58.8289929Z           ]
2026-06-20T11:21:58.8290034Z         },
2026-06-20T11:21:58.8290150Z         "int": {
2026-06-20T11:21:58.8290272Z           "complete": false,
2026-06-20T11:21:58.8290397Z           "evidence": []
2026-06-20T11:21:58.8290517Z         },
2026-06-20T11:21:58.8290639Z         "unit": {
2026-06-20T11:21:58.8290758Z           "complete": true,
2026-06-20T11:21:58.8290883Z           "evidence": [
2026-06-20T11:21:58.8290991Z             {
2026-06-20T11:21:58.8291140Z               "path": "crates/spt-daemon/src/registryhost.rs",
2026-06-20T11:21:58.8291258Z               "line": 1009
2026-06-20T11:21:58.8291363Z             },
2026-06-20T11:21:58.8291483Z             {
2026-06-20T11:21:58.8291630Z               "path": "crates/spt-store/src/roster.rs",
2026-06-20T11:21:58.8291746Z               "line": 462
2026-06-20T11:21:58.8291859Z             }
2026-06-20T11:21:58.8291979Z           ]
2026-06-20T11:21:58.8292094Z         }
2026-06-20T11:21:58.8292222Z       }
2026-06-20T11:21:58.8292332Z     },
2026-06-20T11:21:58.8292447Z     {
2026-06-20T11:21:58.8292574Z       "id": "REQ-MESH-6",
2026-06-20T11:21:58.8293868Z       "title": "Concurrent liveness probes: `spt subnet status --nodes` fans out its offline/serve-probes (REQ-SUBNET-5) CONCURRENTLY — total wall-time bounded by the single-probe ceiling (~3s), never k×ceiling. The mesh makes a node see ALL members (many possibly offline), so a serial probe loop would be offline_count×3s. (Planning verifies the current REQ-SUBNET-5 probe loop's behavior and fixes it if serial.)",
2026-06-20T11:21:58.8294012Z       "requiredStages": [
2026-06-20T11:21:58.8294126Z         "impl",
2026-06-20T11:21:58.8294240Z         "unit"
2026-06-20T11:21:58.8294359Z       ],
2026-06-20T11:21:58.8294474Z       "stages": {
2026-06-20T11:21:58.8294589Z         "doc": {
2026-06-20T11:21:58.8294712Z           "complete": false,
2026-06-20T11:21:58.8294822Z           "evidence": []
2026-06-20T11:21:58.8294938Z         },
2026-06-20T11:21:58.8295041Z         "impl": {
2026-06-20T11:21:58.8295165Z           "complete": true,
2026-06-20T11:21:58.8295272Z           "evidence": [
2026-06-20T11:21:58.8295394Z             {
2026-06-20T11:21:58.8295519Z               "path": "crates/spt/src/cli.rs",
2026-06-20T11:21:58.8295633Z               "line": 4181
2026-06-20T11:21:58.8295751Z             }
2026-06-20T11:21:58.8295855Z           ]
2026-06-20T11:21:58.8295960Z         },
2026-06-20T11:21:58.8296063Z         "int": {
2026-06-20T11:21:58.8296192Z           "complete": false,
2026-06-20T11:21:58.8296321Z           "evidence": []
2026-06-20T11:21:58.8296425Z         },
2026-06-20T11:21:58.8296536Z         "unit": {
2026-06-20T11:21:58.8296655Z           "complete": true,
2026-06-20T11:21:58.8296777Z           "evidence": [
2026-06-20T11:21:58.8296888Z             {
2026-06-20T11:21:58.8297031Z               "path": "crates/spt/src/cli.rs",
2026-06-20T11:21:58.8297255Z               "line": 10602
2026-06-20T11:21:58.8297384Z             },
2026-06-20T11:21:58.8297500Z             {
2026-06-20T11:21:58.8297627Z               "path": "crates/spt/src/cli.rs",
2026-06-20T11:21:58.8297746Z               "line": 10629
2026-06-20T11:21:58.8297861Z             },
2026-06-20T11:21:58.8297984Z             {
2026-06-20T11:21:58.8298105Z               "path": "crates/spt/src/cli.rs",
2026-06-20T11:21:58.8298219Z               "line": 10653
2026-06-20T11:21:58.8298331Z             }
2026-06-20T11:21:58.8298446Z           ]
2026-06-20T11:21:58.8298559Z         }
2026-06-20T11:21:58.8298667Z       }
2026-06-20T11:21:58.8298884Z     },
2026-06-20T11:21:58.8299078Z     {
2026-06-20T11:21:58.8299212Z       "id": "REQ-MIGRATE-1",
2026-06-20T11:21:58.8299403Z       "title": "Auto-detect and migrate a legacy claude_skill_owl install",
2026-06-20T11:21:58.8299541Z       "requiredStages": [],
2026-06-20T11:21:58.8299659Z       "stages": {
2026-06-20T11:21:58.8299780Z         "doc": {
2026-06-20T11:21:58.8299899Z           "complete": false,
2026-06-20T11:21:58.8300022Z           "evidence": []
2026-06-20T11:21:58.8300142Z         },
2026-06-20T11:21:58.8300256Z         "impl": {
2026-06-20T11:21:58.8300371Z           "complete": false,
2026-06-20T11:21:58.8300494Z           "evidence": []
2026-06-20T11:21:58.8300604Z         },
2026-06-20T11:21:58.8300719Z         "int": {
2026-06-20T11:21:58.8300837Z           "complete": false,
2026-06-20T11:21:58.8300948Z           "evidence": []
2026-06-20T11:21:58.8301053Z         },
2026-06-20T11:21:58.8301166Z         "unit": {
2026-06-20T11:21:58.8301279Z           "complete": false,
2026-06-20T11:21:58.8301404Z           "evidence": []
2026-06-20T11:21:58.8301518Z         }
2026-06-20T11:21:58.8301623Z       }
2026-06-20T11:21:58.8301724Z     },
2026-06-20T11:21:58.8301833Z     {
2026-06-20T11:21:58.8301953Z       "id": "REQ-MSG-1",
2026-06-20T11:21:58.8302400Z       "title": "Local message delivery: TCP-first to a registered address, spool fallback when offline; id->address via registry (stale-clean first); reply routing (__REPLY_TO__)",
2026-06-20T11:21:58.8302524Z       "requiredStages": [
2026-06-20T11:21:58.8302645Z         "impl",
2026-06-20T11:21:58.8302763Z         "unit",
2026-06-20T11:21:58.8302868Z         "int"
2026-06-20T11:21:58.8302988Z       ],
2026-06-20T11:21:58.8303096Z       "stages": {
2026-06-20T11:21:58.8303206Z         "doc": {
2026-06-20T11:21:58.8303326Z           "complete": false,
2026-06-20T11:21:58.8303444Z           "evidence": []
2026-06-20T11:21:58.8303554Z         },
2026-06-20T11:21:58.8303672Z         "impl": {
2026-06-20T11:21:58.8303799Z           "complete": true,
2026-06-20T11:21:58.8303909Z           "evidence": [
2026-06-20T11:21:58.8304014Z             {
2026-06-20T11:21:58.8304161Z               "path": "crates/spt-msg/src/deliver.rs",
2026-06-20T11:21:58.8304281Z               "line": 28
2026-06-20T11:21:58.8304394Z             },
2026-06-20T11:21:58.8304500Z             {
2026-06-20T11:21:58.8304638Z               "path": "crates/spt-msg/src/deliver.rs",
2026-06-20T11:21:58.8304747Z               "line": 94
2026-06-20T11:21:58.8304863Z             },
2026-06-20T11:21:58.8304972Z             {
2026-06-20T11:21:58.8305110Z               "path": "crates/spt-msg/src/deliver.rs",
2026-06-20T11:21:58.8305226Z               "line": 127
2026-06-20T11:21:58.8305334Z             },
2026-06-20T11:21:58.8305449Z             {
2026-06-20T11:21:58.8305578Z               "path": "crates/spt-msg/src/deliver.rs",
2026-06-20T11:21:58.8305687Z               "line": 149
2026-06-20T11:21:58.8305798Z             },
2026-06-20T11:21:58.8305920Z             {
2026-06-20T11:21:58.8306069Z               "path": "crates/spt-msg/src/deliver.rs",
2026-06-20T11:21:58.8306184Z               "line": 174
2026-06-20T11:21:58.8306297Z             },
2026-06-20T11:21:58.8306406Z             {
2026-06-20T11:21:58.8306557Z               "path": "crates/spt-msg/src/listener.rs",
2026-06-20T11:21:58.8306666Z               "line": 18
2026-06-20T11:21:58.8306891Z             },
2026-06-20T11:21:58.8307013Z             {
2026-06-20T11:21:58.8307153Z               "path": "crates/spt-msg/src/ring.rs",
2026-06-20T11:21:58.8307276Z               "line": 13
2026-06-20T11:21:58.8307382Z             },
2026-06-20T11:21:58.8307491Z             {
2026-06-20T11:21:58.8307619Z               "path": "crates/spt-msg/src/ring.rs",
2026-06-20T11:21:58.8307745Z               "line": 62
2026-06-20T11:21:58.8307853Z             },
2026-06-20T11:21:58.8307958Z             {
2026-06-20T11:21:58.8308093Z               "path": "crates/spt-msg/src/wire.rs",
2026-06-20T11:21:58.8308211Z               "line": 13
2026-06-20T11:21:58.8308422Z             }
2026-06-20T11:21:58.8308530Z           ]
2026-06-20T11:21:58.8308646Z         },
2026-06-20T11:21:58.8308770Z         "int": {
2026-06-20T11:21:58.8308892Z           "complete": true,
2026-06-20T11:21:58.8309091Z           "evidence": [
2026-06-20T11:21:58.8309204Z             {
2026-06-20T11:21:58.8309376Z               "path": "crates/spt-msg/tests/killer_quickstart.rs",
2026-06-20T11:21:58.8309490Z               "line": 9
2026-06-20T11:21:58.8309610Z             },
2026-06-20T11:21:58.8309730Z             {
2026-06-20T11:21:58.8309895Z               "path": "crates/spt-msg/tests/killer_quickstart.rs",
2026-06-20T11:21:58.8310011Z               "line": 56
2026-06-20T11:21:58.8310115Z             },
2026-06-20T11:21:58.8310239Z             {
2026-06-20T11:21:58.8310387Z               "path": "crates/spt-msg/tests/killer_quickstart.rs",
2026-06-20T11:21:58.8310506Z               "line": 113
2026-06-20T11:21:58.8310626Z             }
2026-06-20T11:21:58.8310730Z           ]
2026-06-20T11:21:58.8310854Z         },
2026-06-20T11:21:58.8310964Z         "unit": {
2026-06-20T11:21:58.8311087Z           "complete": true,
2026-06-20T11:21:58.8311198Z           "evidence": [
2026-06-20T11:21:58.8311303Z             {
2026-06-20T11:21:58.8311436Z               "path": "crates/spt-msg/src/deliver.rs",
2026-06-20T11:21:58.8311551Z               "line": 203
2026-06-20T11:21:58.8311670Z             },
2026-06-20T11:21:58.8311778Z             {
2026-06-20T11:21:58.8311926Z               "path": "crates/spt-msg/src/deliver.rs",
2026-06-20T11:21:58.8312027Z               "line": 232
2026-06-20T11:21:58.8312135Z             },
2026-06-20T11:21:58.8312241Z             {
2026-06-20T11:21:58.8312374Z               "path": "crates/spt-msg/src/deliver.rs",
2026-06-20T11:21:58.8312503Z               "line": 277
2026-06-20T11:21:58.8312618Z             },
2026-06-20T11:21:58.8312745Z             {
2026-06-20T11:21:58.8312871Z               "path": "crates/spt-msg/src/deliver.rs",
2026-06-20T11:21:58.8312999Z               "line": 300
2026-06-20T11:21:58.8313108Z             },
2026-06-20T11:21:58.8313219Z             {
2026-06-20T11:21:58.8313361Z               "path": "crates/spt-msg/src/deliver.rs",
2026-06-20T11:21:58.8313467Z               "line": 325
2026-06-20T11:21:58.8313577Z             },
2026-06-20T11:21:58.8313695Z             {
2026-06-20T11:21:58.8313834Z               "path": "crates/spt-msg/src/listener.rs",
2026-06-20T11:21:58.8313952Z               "line": 204
2026-06-20T11:21:58.8314056Z             },
2026-06-20T11:21:58.8314166Z             {
2026-06-20T11:21:58.8314292Z               "path": "crates/spt-msg/src/listener.rs",
2026-06-20T11:21:58.8314411Z               "line": 237
2026-06-20T11:21:58.8314517Z             },
2026-06-20T11:21:58.8314631Z             {
2026-06-20T11:21:58.8314774Z               "path": "crates/spt-msg/src/listener.rs",
2026-06-20T11:21:58.8314874Z               "line": 251
2026-06-20T11:21:58.8314993Z             },
2026-06-20T11:21:58.8315099Z             {
2026-06-20T11:21:58.8315237Z               "path": "crates/spt-msg/src/listener.rs",
2026-06-20T11:21:58.8315360Z               "line": 263
2026-06-20T11:21:58.8315466Z             },
2026-06-20T11:21:58.8315580Z             {
2026-06-20T11:21:58.8315714Z               "path": "crates/spt-msg/src/ring.rs",
2026-06-20T11:21:58.8315951Z               "line": 162
2026-06-20T11:21:58.8316062Z             },
2026-06-20T11:21:58.8316180Z             {
2026-06-20T11:21:58.8316319Z               "path": "crates/spt-msg/src/ring.rs",
2026-06-20T11:21:58.8316425Z               "line": 242
2026-06-20T11:21:58.8316538Z             },
2026-06-20T11:21:58.8316649Z             {
2026-06-20T11:21:58.8316782Z               "path": "crates/spt-msg/src/wire.rs",
2026-06-20T11:21:58.8316895Z               "line": 134
2026-06-20T11:21:58.8317004Z             },
2026-06-20T11:21:58.8317122Z             {
2026-06-20T11:21:58.8317240Z               "path": "crates/spt-msg/src/wire.rs",
2026-06-20T11:21:58.8317360Z               "line": 153
2026-06-20T11:21:58.8317560Z             }
2026-06-20T11:21:58.8317676Z           ]
2026-06-20T11:21:58.8317775Z         }
2026-06-20T11:21:58.8317893Z       }
2026-06-20T11:21:58.8318005Z     },
2026-06-20T11:21:58.8318114Z     {
2026-06-20T11:21:58.8318242Z       "id": "REQ-MSG-2",
2026-06-20T11:21:58.8318523Z       "title": "spt binary CLI surface: send/ring/ready(+--once)/list/stop/whoami, stable arg shapes + exit codes",
2026-06-20T11:21:58.8318658Z       "requiredStages": [
2026-06-20T11:21:58.8318771Z         "impl",
2026-06-20T11:21:58.8318891Z         "unit"
2026-06-20T11:21:58.8319090Z       ],
2026-06-20T11:21:58.8319196Z       "stages": {
2026-06-20T11:21:58.8319315Z         "doc": {
2026-06-20T11:21:58.8319443Z           "complete": false,
2026-06-20T11:21:58.8319571Z           "evidence": []
2026-06-20T11:21:58.8319679Z         },
2026-06-20T11:21:58.8319797Z         "impl": {
2026-06-20T11:21:58.8319917Z           "complete": true,
2026-06-20T11:21:58.8320036Z           "evidence": [
2026-06-20T11:21:58.8320160Z             {
2026-06-20T11:21:58.8320294Z               "path": "crates/spt/src/cli.rs",
2026-06-20T11:21:58.8320413Z               "line": 11
2026-06-20T11:21:58.8320533Z             },
2026-06-20T11:21:58.8320656Z             {
2026-06-20T11:21:58.8320779Z               "path": "crates/spt/src/main.rs",
2026-06-20T11:21:58.8320890Z               "line": 8
2026-06-20T11:21:58.8321019Z             }
2026-06-20T11:21:58.8321128Z           ]
2026-06-20T11:21:58.8321243Z         },
2026-06-20T11:21:58.8321352Z         "int": {
2026-06-20T11:21:58.8321477Z           "complete": false,
2026-06-20T11:21:58.8321590Z           "evidence": []
2026-06-20T11:21:58.8321695Z         },
2026-06-20T11:21:58.8321811Z         "unit": {
2026-06-20T11:21:58.8321929Z           "complete": true,
2026-06-20T11:21:58.8322039Z           "evidence": [
2026-06-20T11:21:58.8322150Z             {
2026-06-20T11:21:58.8322272Z               "path": "crates/spt/src/cli.rs",
2026-06-20T11:21:58.8322385Z               "line": 7717
2026-06-20T11:21:58.8322496Z             },
2026-06-20T11:21:58.8322605Z             {
2026-06-20T11:21:58.8322729Z               "path": "crates/spt/src/cli.rs",
2026-06-20T11:21:58.8322859Z               "line": 7759
2026-06-20T11:21:58.8322963Z             },
2026-06-20T11:21:58.8323078Z             {
2026-06-20T11:21:58.8323211Z               "path": "crates/spt/src/cli.rs",
2026-06-20T11:21:58.8323329Z               "line": 7808
2026-06-20T11:21:58.8323435Z             },
2026-06-20T11:21:58.8323544Z             {
2026-06-20T11:21:58.8323683Z               "path": "crates/spt/src/cli.rs",
2026-06-20T11:21:58.8323793Z               "line": 7831
2026-06-20T11:21:58.8323912Z             },
2026-06-20T11:21:58.8324027Z             {
2026-06-20T11:21:58.8324146Z               "path": "crates/spt/src/cli.rs",
2026-06-20T11:21:58.8324265Z               "line": 9807
2026-06-20T11:21:58.8324361Z             },
2026-06-20T11:21:58.8324470Z             {
2026-06-20T11:21:58.8324597Z               "path": "crates/spt/src/cli.rs",
2026-06-20T11:21:58.8324711Z               "line": 9816
2026-06-20T11:21:58.8324825Z             },
2026-06-20T11:21:58.8324928Z             {
2026-06-20T11:21:58.8325058Z               "path": "crates/spt/src/cli.rs",
2026-06-20T11:21:58.8325163Z               "line": 9830
2026-06-20T11:21:58.8325388Z             }
2026-06-20T11:21:58.8325497Z           ]
2026-06-20T11:21:58.8325610Z         }
2026-06-20T11:21:58.8325730Z       }
2026-06-20T11:21:58.8325830Z     },
2026-06-20T11:21:58.8325945Z     {
2026-06-20T11:21:58.8326069Z       "id": "REQ-MSG-3",
2026-06-20T11:21:58.8326464Z       "title": "Ready-agent lifecycle: register perch (info.json + listener + registry address) on ready, drain spooled backlog on startup, clean teardown",
2026-06-20T11:21:58.8326599Z       "requiredStages": [
2026-06-20T11:21:58.8326708Z         "impl",
2026-06-20T11:21:58.8326826Z         "unit",
2026-06-20T11:21:58.8326937Z         "int"
2026-06-20T11:21:58.8327060Z       ],
2026-06-20T11:21:58.8327295Z       "stages": {
2026-06-20T11:21:58.8327412Z         "doc": {
2026-06-20T11:21:58.8327536Z           "complete": false,
2026-06-20T11:21:58.8327659Z           "evidence": []
2026-06-20T11:21:58.8327776Z         },
2026-06-20T11:21:58.8327887Z         "impl": {
2026-06-20T11:21:58.8328002Z           "complete": true,
2026-06-20T11:21:58.8328125Z           "evidence": [
2026-06-20T11:21:58.8328245Z             {
2026-06-20T11:21:58.8328378Z               "path": "crates/spt-msg/src/listener.rs",
2026-06-20T11:21:58.8328492Z               "line": 19
2026-06-20T11:21:58.8328616Z             },
2026-06-20T11:21:58.8328735Z             {
2026-06-20T11:21:58.8328879Z               "path": "crates/spt-msg/src/ready.rs",
2026-06-20T11:21:58.8329054Z               "line": 21
2026-06-20T11:21:58.8329180Z             },
2026-06-20T11:21:58.8329288Z             {
2026-06-20T11:21:58.8329417Z               "path": "crates/spt-msg/src/ready.rs",
2026-06-20T11:21:58.8329542Z               "line": 48
2026-06-20T11:21:58.8329655Z             },
2026-06-20T11:21:58.8329776Z             {
2026-06-20T11:21:58.8329904Z               "path": "crates/spt-msg/src/ready.rs",
2026-06-20T11:21:58.8330022Z               "line": 174
2026-06-20T11:21:58.8330141Z             }
2026-06-20T11:21:58.8330253Z           ]
2026-06-20T11:21:58.8330372Z         },
2026-06-20T11:21:58.8330487Z         "int": {
2026-06-20T11:21:58.8330606Z           "complete": true,
2026-06-20T11:21:58.8330720Z           "evidence": [
2026-06-20T11:21:58.8330835Z             {
2026-06-20T11:21:58.8330997Z               "path": "crates/spt-msg/tests/killer_quickstart.rs",
2026-06-20T11:21:58.8331112Z               "line": 10
2026-06-20T11:21:58.8331221Z             },
2026-06-20T11:21:58.8331326Z             {
2026-06-20T11:21:58.8331483Z               "path": "crates/spt-msg/tests/killer_quickstart.rs",
2026-06-20T11:21:58.8331597Z               "line": 56
2026-06-20T11:21:58.8331703Z             }
2026-06-20T11:21:58.8331807Z           ]
2026-06-20T11:21:58.8331917Z         },
2026-06-20T11:21:58.8332037Z         "unit": {
2026-06-20T11:21:58.8332155Z           "complete": true,
2026-06-20T11:21:58.8332265Z           "evidence": [
2026-06-20T11:21:58.8332371Z             {
2026-06-20T11:21:58.8332503Z               "path": "crates/spt-msg/src/ready.rs",
2026-06-20T11:21:58.8332609Z               "line": 228
2026-06-20T11:21:58.8332710Z             },
2026-06-20T11:21:58.8332827Z             {
2026-06-20T11:21:58.8332955Z               "path": "crates/spt-msg/src/ready.rs",
2026-06-20T11:21:58.8333076Z               "line": 247
2026-06-20T11:21:58.8333194Z             },
2026-06-20T11:21:58.8333308Z             {
2026-06-20T11:21:58.8333447Z               "path": "crates/spt-msg/src/ready.rs",
2026-06-20T11:21:58.8333551Z               "line": 270
2026-06-20T11:21:58.8333662Z             }
2026-06-20T11:21:58.8333776Z           ]
2026-06-20T11:21:58.8333894Z         }
2026-06-20T11:21:58.8334010Z       }
2026-06-20T11:21:58.8334119Z     },
2026-06-20T11:21:58.8334233Z     {
2026-06-20T11:21:58.8334348Z       "id": "REQ-MSG-4",
2026-06-20T11:21:58.8335205Z       "title": "Listener stream stdout emits EVENT envelope lines (sister-format, ADR-0001): parse the __REPLY_TO__ frame, pass pre-formed typed envelopes through verbatim (no double-wrap), compose <EVENT type=\"msg\" from=…> otherwise, chunk oversized lines into EVENT-PART",
2026-06-20T11:21:58.8335436Z       "requiredStages": [
2026-06-20T11:21:58.8335551Z         "impl",
2026-06-20T11:21:58.8335666Z         "unit",
2026-06-20T11:21:58.8335774Z         "int"
2026-06-20T11:21:58.8335880Z       ],
2026-06-20T11:21:58.8335990Z       "stages": {
2026-06-20T11:21:58.8336099Z         "doc": {
2026-06-20T11:21:58.8336215Z           "complete": false,
2026-06-20T11:21:58.8336323Z           "evidence": []
2026-06-20T11:21:58.8336432Z         },
2026-06-20T11:21:58.8336553Z         "impl": {
2026-06-20T11:21:58.8336677Z           "complete": true,
2026-06-20T11:21:58.8336791Z           "evidence": [
2026-06-20T11:21:58.8336996Z             {
2026-06-20T11:21:58.8337125Z               "path": "crates/spt-msg/src/emit.rs",
2026-06-20T11:21:58.8337244Z               "line": 19
2026-06-20T11:21:58.8337349Z             },
2026-06-20T11:21:58.8337464Z             {
2026-06-20T11:21:58.8337592Z               "path": "crates/spt-msg/src/emit.rs",
2026-06-20T11:21:58.8337715Z               "line": 46
2026-06-20T11:21:58.8337826Z             },
2026-06-20T11:21:58.8337930Z             {
2026-06-20T11:21:58.8338072Z               "path": "crates/spt/src/api/startup.rs",
2026-06-20T11:21:58.8338191Z               "line": 532
2026-06-20T11:21:58.8338303Z             },
2026-06-20T11:21:58.8338418Z             {
2026-06-20T11:21:58.8338547Z               "path": "crates/spt/src/cli.rs",
2026-06-20T11:21:58.8338665Z               "line": 3110
2026-06-20T11:21:58.8338767Z             }
2026-06-20T11:21:58.8338886Z           ]
2026-06-20T11:21:58.8339091Z         },
2026-06-20T11:21:58.8339195Z         "int": {
2026-06-20T11:21:58.8339323Z           "complete": true,
2026-06-20T11:21:58.8339434Z           "evidence": [
2026-06-20T11:21:58.8339553Z             {
2026-06-20T11:21:58.8339696Z               "path": "crates/spt/tests/quickstart_e2e.rs",
2026-06-20T11:21:58.8339816Z               "line": 98
2026-06-20T11:21:58.8339929Z             },
2026-06-20T11:21:58.8340031Z             {
2026-06-20T11:21:58.8340177Z               "path": "crates/spt/tests/quickstart_e2e.rs",
2026-06-20T11:21:58.8340297Z               "line": 128
2026-06-20T11:21:58.8340417Z             }
2026-06-20T11:21:58.8340534Z           ]
2026-06-20T11:21:58.8340648Z         },
2026-06-20T11:21:58.8340768Z         "unit": {
2026-06-20T11:21:58.8340889Z           "complete": true,
2026-06-20T11:21:58.8341013Z           "evidence": [
2026-06-20T11:21:58.8341120Z             {
2026-06-20T11:21:58.8341261Z               "path": "crates/spt-msg/src/emit.rs",
2026-06-20T11:21:58.8341372Z               "line": 68
2026-06-20T11:21:58.8341481Z             },
2026-06-20T11:21:58.8341590Z             {
2026-06-20T11:21:58.8341724Z               "path": "crates/spt-msg/src/emit.rs",
2026-06-20T11:21:58.8341847Z               "line": 79
2026-06-20T11:21:58.8341953Z             },
2026-06-20T11:21:58.8342062Z             {
2026-06-20T11:21:58.8342191Z               "path": "crates/spt-msg/src/emit.rs",
2026-06-20T11:21:58.8342326Z               "line": 90
2026-06-20T11:21:58.8342430Z             },
2026-06-20T11:21:58.8342539Z             {
2026-06-20T11:21:58.8342669Z               "path": "crates/spt-msg/src/emit.rs",
2026-06-20T11:21:58.8342773Z               "line": 151
2026-06-20T11:21:58.8342888Z             }
2026-06-20T11:21:58.8342998Z           ]
2026-06-20T11:21:58.8343121Z         }
2026-06-20T11:21:58.8343236Z       }
2026-06-20T11:21:58.8343345Z     },
2026-06-20T11:21:58.8343468Z     {
2026-06-20T11:21:58.8343588Z       "id": "REQ-MSG-5",
2026-06-20T11:21:58.8344341Z       "title": "user-msg envelope kind + daemon identity gate: a Gateway endpoint / the local user's CLI author user-msg (the user's authority); agent-family senders re-stamped to plain msg; identity-gated never payload-trusted (KH 7.3/7.5); wire-additive (N-1 receivers tolerate the new type)",
2026-06-20T11:21:58.8344454Z       "requiredStages": [
2026-06-20T11:21:58.8344566Z         "doc",
2026-06-20T11:21:58.8344679Z         "impl",
2026-06-20T11:21:58.8344894Z         "unit"
2026-06-20T11:21:58.8345018Z       ],
2026-06-20T11:21:58.8345123Z       "stages": {
2026-06-20T11:21:58.8345233Z         "doc": {
2026-06-20T11:21:58.8345351Z           "complete": true,
2026-06-20T11:21:58.8345471Z           "evidence": [
2026-06-20T11:21:58.8345586Z             {
2026-06-20T11:21:58.8345698Z               "path": "CONTEXT.md",
2026-06-20T11:21:58.8345813Z               "line": 231
2026-06-20T11:21:58.8345926Z             }
2026-06-20T11:21:58.8346034Z           ]
2026-06-20T11:21:58.8346140Z         },
2026-06-20T11:21:58.8346264Z         "impl": {
2026-06-20T11:21:58.8346392Z           "complete": true,
2026-06-20T11:21:58.8346607Z           "evidence": [
2026-06-20T11:21:58.8346726Z             {
2026-06-20T11:21:58.8346865Z               "path": "crates/spt-daemon/src/wan.rs",
2026-06-20T11:21:58.8346983Z               "line": 60
2026-06-20T11:21:58.8347099Z             },
2026-06-20T11:21:58.8347213Z             {
2026-06-20T11:21:58.8347360Z               "path": "crates/spt-proto/src/event.rs",
2026-06-20T11:21:58.8347471Z               "line": 126
2026-06-20T11:21:58.8347589Z             },
2026-06-20T11:21:58.8347690Z             {
2026-06-20T11:21:58.8347837Z               "path": "crates/spt-proto/src/event.rs",
2026-06-20T11:21:58.8347951Z               "line": 135
2026-06-20T11:21:58.8348053Z             },
2026-06-20T11:21:58.8348161Z             {
2026-06-20T11:21:58.8348290Z               "path": "crates/spt-proto/src/event.rs",
2026-06-20T11:21:58.8348415Z               "line": 149
2026-06-20T11:21:58.8348519Z             },
2026-06-20T11:21:58.8348637Z             {
2026-06-20T11:21:58.8348779Z               "path": "crates/spt-proto/src/event.rs",
2026-06-20T11:21:58.8348901Z               "line": 178
2026-06-20T11:21:58.8349093Z             },
2026-06-20T11:21:58.8349202Z             {
2026-06-20T11:21:58.8349346Z               "path": "crates/spt/src/cli.rs",
2026-06-20T11:21:58.8349456Z               "line": 2802
2026-06-20T11:21:58.8349588Z             }
2026-06-20T11:21:58.8349704Z           ]
2026-06-20T11:21:58.8349808Z         },
2026-06-20T11:21:58.8349927Z         "int": {
2026-06-20T11:21:58.8350033Z           "complete": true,
2026-06-20T11:21:58.8350161Z           "evidence": [
2026-06-20T11:21:58.8350271Z             {
2026-06-20T11:21:58.8350422Z               "path": "crates/spt/tests/gateway_e2e.rs",
2026-06-20T11:21:58.8350533Z               "line": 19
2026-06-20T11:21:58.8350643Z             }
2026-06-20T11:21:58.8350756Z           ]
2026-06-20T11:21:58.8350867Z         },
2026-06-20T11:21:58.8350987Z         "unit": {
2026-06-20T11:21:58.8351099Z           "complete": true,
2026-06-20T11:21:58.8351223Z           "evidence": [
2026-06-20T11:21:58.8351342Z             {
2026-06-20T11:21:58.8351473Z               "path": "crates/spt-daemon/src/wan.rs",
2026-06-20T11:21:58.8351593Z               "line": 192
2026-06-20T11:21:58.8351708Z             },
2026-06-20T11:21:58.8351826Z             {
2026-06-20T11:21:58.8351970Z               "path": "crates/spt-daemon/tests/wanmsg.rs",
2026-06-20T11:21:58.8352093Z               "line": 154
2026-06-20T11:21:58.8352208Z             },
2026-06-20T11:21:58.8352317Z             {
2026-06-20T11:21:58.8352450Z               "path": "crates/spt-msg/src/emit.rs",
2026-06-20T11:21:58.8352566Z               "line": 122
2026-06-20T11:21:58.8352675Z             },
2026-06-20T11:21:58.8352785Z             {
2026-06-20T11:21:58.8352928Z               "path": "crates/spt-proto/src/event.rs",
2026-06-20T11:21:58.8353046Z               "line": 452
2026-06-20T11:21:58.8353153Z             },
2026-06-20T11:21:58.8353257Z             {
2026-06-20T11:21:58.8353390Z               "path": "crates/spt-proto/src/event.rs",
2026-06-20T11:21:58.8353511Z               "line": 501
2026-06-20T11:21:58.8353623Z             },
2026-06-20T11:21:58.8353734Z             {
2026-06-20T11:21:58.8353864Z               "path": "crates/spt-proto/src/event.rs",
2026-06-20T11:21:58.8353966Z               "line": 517
2026-06-20T11:21:58.8354177Z             },
2026-06-20T11:21:58.8354290Z             {
2026-06-20T11:21:58.8354429Z               "path": "crates/spt-proto/src/event.rs",
2026-06-20T11:21:58.8354539Z               "line": 536
2026-06-20T11:21:58.8354652Z             },
2026-06-20T11:21:58.8354763Z             {
2026-06-20T11:21:58.8354887Z               "path": "crates/spt/src/cli.rs",
2026-06-20T11:21:58.8355015Z               "line": 7660
2026-06-20T11:21:58.8355121Z             }
2026-06-20T11:21:58.8355235Z           ]
2026-06-20T11:21:58.8355339Z         }
2026-06-20T11:21:58.8355460Z       }
2026-06-20T11:21:58.8355578Z     },
2026-06-20T11:21:58.8355688Z     {
2026-06-20T11:21:58.8355911Z       "id": "REQ-MSG-6",
2026-06-20T11:21:58.8357524Z       "title": "cross-node Gateway user-msg honored via advertised endpoint_type: a user-msg from a Gateway-typed origin survives the receive_wan funnel as user-msg (vs the fail-closed re-stamp), keyed on the QUIC-handshake-proven origin node (never wire `from`). Trust boundary = subnet membership (operator-ratified 2026-06-13); no defense against an in-subnet member forging the type. Instance.endpoint_type is an additive serde-default field extending REQ-INST-7's data model. Absent/unknown type → re-stamp (N-1 rollout grace)",
2026-06-20T11:21:58.8357645Z       "requiredStages": [
2026-06-20T11:21:58.8357759Z         "doc",
2026-06-20T11:21:58.8357863Z         "impl",
2026-06-20T11:21:58.8357974Z         "unit"
2026-06-20T11:21:58.8358083Z       ],
2026-06-20T11:21:58.8358202Z       "stages": {
2026-06-20T11:21:58.8358313Z         "doc": {
2026-06-20T11:21:58.8358435Z           "complete": true,
2026-06-20T11:21:58.8358560Z           "evidence": [
2026-06-20T11:21:58.8358684Z             {
2026-06-20T11:21:58.8358798Z               "path": "CONTEXT.md",
2026-06-20T11:21:58.8358908Z               "line": 234
2026-06-20T11:21:58.8359130Z             }
2026-06-20T11:21:58.8359250Z           ]
2026-06-20T11:21:58.8359363Z         },
2026-06-20T11:21:58.8359485Z         "impl": {
2026-06-20T11:21:58.8359605Z           "complete": true,
2026-06-20T11:21:58.8359734Z           "evidence": [
2026-06-20T11:21:58.8359839Z             {
2026-06-20T11:21:58.8360001Z               "path": "crates/spt-daemon/src/registryhost.rs",
2026-06-20T11:21:58.8360119Z               "line": 177
2026-06-20T11:21:58.8360230Z             },
2026-06-20T11:21:58.8360340Z             {
2026-06-20T11:21:58.8360487Z               "path": "crates/spt-daemon/src/registryhost.rs",
2026-06-20T11:21:58.8360612Z               "line": 428
2026-06-20T11:21:58.8360716Z             },
2026-06-20T11:21:58.8360826Z             {
2026-06-20T11:21:58.8360974Z               "path": "crates/spt-daemon/src/registryhost.rs",
2026-06-20T11:21:58.8361093Z               "line": 451
2026-06-20T11:21:58.8361203Z             },
2026-06-20T11:21:58.8361312Z             {
2026-06-20T11:21:58.8361446Z               "path": "crates/spt-daemon/src/wan.rs",
2026-06-20T11:21:58.8361547Z               "line": 89
2026-06-20T11:21:58.8361668Z             },
2026-06-20T11:21:58.8361778Z             {
2026-06-20T11:21:58.8361920Z               "path": "crates/spt-net/src/net/registry.rs",
2026-06-20T11:21:58.8362043Z               "line": 155
2026-06-20T11:21:58.8362153Z             }
2026-06-20T11:21:58.8362268Z           ]
2026-06-20T11:21:58.8362376Z         },
2026-06-20T11:21:58.8362492Z         "int": {
2026-06-20T11:21:58.8362611Z           "complete": false,
2026-06-20T11:21:58.8362724Z           "evidence": []
2026-06-20T11:21:58.8362845Z         },
2026-06-20T11:21:58.8362963Z         "unit": {
2026-06-20T11:21:58.8363083Z           "complete": true,
2026-06-20T11:21:58.8363192Z           "evidence": [
2026-06-20T11:21:58.8363321Z             {
2026-06-20T11:21:58.8363474Z               "path": "crates/spt-daemon/src/registryhost.rs",
2026-06-20T11:21:58.8363584Z               "line": 1746
2026-06-20T11:21:58.8363723Z             },
2026-06-20T11:21:58.8363822Z             {
2026-06-20T11:21:58.8363969Z               "path": "crates/spt-daemon/src/wan.rs",
2026-06-20T11:21:58.8364222Z               "line": 219
2026-06-20T11:21:58.8364338Z             }
2026-06-20T11:21:58.8364447Z           ]
2026-06-20T11:21:58.8364555Z         }
2026-06-20T11:21:58.8364665Z       }
2026-06-20T11:21:58.8364770Z     },
2026-06-20T11:21:58.8364888Z     {
2026-06-20T11:21:58.8365017Z       "id": "REQ-MSG-ENVELOPE",
2026-06-20T11:21:58.8368752Z       "title": "The <EVENT type=\"msg\" from=…>body</EVENT> envelope (spt-proto::event, the ADR-0001 grammar) is the SOLE canonical arriving-message format at EVERY harness arriving-message surface on an AGENT perch — api listen AND api poll/worker-poll, byte-identical (reverses REQ-MSG-4's 'hook drains keep the raw frame by contract'). SCOPE CARVE-OUT: the shell-command relay (api poll <shell-id> --link, cmd_poll_shell) is a distinct internal transport carrying RAW MAC'd stamped frames the shell child consumes verbatim — NOT an arriving-message surface, deliberately EXEMPT from <EVENT> composition (notify_shell_e2e guards this boundary). __REPLY_TO__ — mis-elevated during the clean-room port to a fake ADR-0001 'stable wire format' (spt-msg/wire.rs, lib.rs) — is REMOVED entirely (spool format_row, the spt-msg TCP frame, emit parse_frame); (from, body) carried structurally, <EVENT> composed once at the delivery boundary. No legacy sister-interop (spt-core never required it). Reply-correlation rebinds onto the structural from / <EVENT from=…> attribute (ADR-0009 access-gate + ADR-0012 Psyche/spt-live reply-target). Self-delimiting by construction → finding F-002 (non-self-delimiting multi-message poll) dissolves. ADR-0020.",
2026-06-20T11:21:58.8369086Z       "requiredStages": [
2026-06-20T11:21:58.8369230Z         "doc",
2026-06-20T11:21:58.8369353Z         "impl",
2026-06-20T11:21:58.8369464Z         "unit",
2026-06-20T11:21:58.8369582Z         "int"
2026-06-20T11:21:58.8369695Z       ],
2026-06-20T11:21:58.8369800Z       "stages": {
2026-06-20T11:21:58.8369909Z         "doc": {
2026-06-20T11:21:58.8370036Z           "complete": true,
2026-06-20T11:21:58.8370161Z           "evidence": [
2026-06-20T11:21:58.8370275Z             {
2026-06-20T11:21:58.8370519Z               "path": "docs/adr/0020-event-envelope-sole-arriving-format-reply-to-removed.md",
2026-06-20T11:21:58.8370632Z               "line": 47
2026-06-20T11:21:58.8370747Z             }
2026-06-20T11:21:58.8370862Z           ]
2026-06-20T11:21:58.8370971Z         },
2026-06-20T11:21:58.8371091Z         "impl": {
2026-06-20T11:21:58.8371210Z           "complete": true,
2026-06-20T11:21:58.8371323Z           "evidence": [
2026-06-20T11:21:58.8371425Z             {
2026-06-20T11:21:58.8371567Z               "path": "crates/spt-msg/src/emit.rs",
2026-06-20T11:21:58.8371677Z               "line": 20
2026-06-20T11:21:58.8371792Z             },
2026-06-20T11:21:58.8371905Z             {
2026-06-20T11:21:58.8372045Z               "path": "crates/spt-msg/src/emit.rs",
2026-06-20T11:21:58.8372163Z               "line": 33
2026-06-20T11:21:58.8372276Z             },
2026-06-20T11:21:58.8372405Z             {
2026-06-20T11:21:58.8372537Z               "path": "crates/spt-msg/src/emit.rs",
2026-06-20T11:21:58.8372641Z               "line": 47
2026-06-20T11:21:58.8372757Z             },
2026-06-20T11:21:58.8372856Z             {
2026-06-20T11:21:58.8372994Z               "path": "crates/spt-msg/src/emit.rs",
2026-06-20T11:21:58.8373104Z               "line": 58
2026-06-20T11:21:58.8373222Z             },
2026-06-20T11:21:58.8373334Z             {
2026-06-20T11:21:58.8373467Z               "path": "crates/spt-msg/src/wire.rs",
2026-06-20T11:21:58.8373575Z               "line": 14
2026-06-20T11:21:58.8373686Z             },
2026-06-20T11:21:58.8373795Z             {
2026-06-20T11:21:58.8373933Z               "path": "crates/spt-msg/src/wire.rs",
2026-06-20T11:21:58.8374058Z               "line": 27
2026-06-20T11:21:58.8374167Z             },
2026-06-20T11:21:58.8374283Z             {
2026-06-20T11:21:58.8374424Z               "path": "crates/spt-msg/src/wire.rs",
2026-06-20T11:21:58.8374539Z               "line": 40
2026-06-20T11:21:58.8377389Z             },
2026-06-20T11:21:58.8377532Z             {
2026-06-20T11:21:58.8377696Z               "path": "crates/spt-store/src/spool.rs",
2026-06-20T11:21:58.8377815Z               "line": 92
2026-06-20T11:21:58.8377917Z             },
2026-06-20T11:21:58.8378030Z             {
2026-06-20T11:21:58.8378178Z               "path": "crates/spt/src/api/delivery.rs",
2026-06-20T11:21:58.8378297Z               "line": 143
2026-06-20T11:21:58.8378401Z             },
2026-06-20T11:21:58.8378517Z             {
2026-06-20T11:21:58.8378654Z               "path": "crates/spt/src/api/delivery.rs",
2026-06-20T11:21:58.8378770Z               "line": 216
2026-06-20T11:21:58.8379118Z             },
2026-06-20T11:21:58.8379227Z             {
2026-06-20T11:21:58.8379375Z               "path": "crates/spt/src/api/startup.rs",
2026-06-20T11:21:58.8379489Z               "line": 533
2026-06-20T11:21:58.8379599Z             },
2026-06-20T11:21:58.8379705Z             {
2026-06-20T11:21:58.8379846Z               "path": "crates/spt/src/api/worker.rs",
2026-06-20T11:21:58.8379971Z               "line": 78
2026-06-20T11:21:58.8380077Z             },
2026-06-20T11:21:58.8380189Z             {
2026-06-20T11:21:58.8380317Z               "path": "crates/spt/src/cli.rs",
2026-06-20T11:21:58.8380432Z               "line": 3111
2026-06-20T11:21:58.8380535Z             }
2026-06-20T11:21:58.8380639Z           ]
2026-06-20T11:21:58.8380750Z         },
2026-06-20T11:21:58.8380854Z         "int": {
2026-06-20T11:21:58.8380973Z           "complete": true,
2026-06-20T11:21:58.8381102Z           "evidence": [
2026-06-20T11:21:58.8381216Z             {
2026-06-20T11:21:58.8381384Z               "path": "crates/spt/tests/poll_envelope_e2e.rs",
2026-06-20T11:21:58.8381502Z               "line": 15
2026-06-20T11:21:58.8381613Z             }
2026-06-20T11:21:58.8381718Z           ]
2026-06-20T11:21:58.8381831Z         },
2026-06-20T11:21:58.8381942Z         "unit": {
2026-06-20T11:21:58.8382065Z           "complete": true,
2026-06-20T11:21:58.8382189Z           "evidence": [
2026-06-20T11:21:58.8382300Z             {
2026-06-20T11:21:58.8382437Z               "path": "crates/spt-msg/src/emit.rs",
2026-06-20T11:21:58.8382542Z               "line": 102
2026-06-20T11:21:58.8382653Z             },
2026-06-20T11:21:58.8382761Z             {
2026-06-20T11:21:58.8382898Z               "path": "crates/spt-msg/src/emit.rs",
2026-06-20T11:21:58.8383012Z               "line": 137
2026-06-20T11:21:58.8383121Z             },
2026-06-20T11:21:58.8383240Z             {
2026-06-20T11:21:58.8383369Z               "path": "crates/spt-msg/src/wire.rs",
2026-06-20T11:21:58.8383477Z               "line": 98
2026-06-20T11:21:58.8383593Z             },
2026-06-20T11:21:58.8383717Z             {
2026-06-20T11:21:58.8383850Z               "path": "crates/spt-msg/src/wire.rs",
2026-06-20T11:21:58.8383960Z               "line": 106
2026-06-20T11:21:58.8384074Z             },
2026-06-20T11:21:58.8384174Z             {
2026-06-20T11:21:58.8384308Z               "path": "crates/spt-msg/src/wire.rs",
2026-06-20T11:21:58.8384427Z               "line": 113
2026-06-20T11:21:58.8384538Z             },
2026-06-20T11:21:58.8384661Z             {
2026-06-20T11:21:58.8384794Z               "path": "crates/spt-msg/src/wire.rs",
2026-06-20T11:21:58.8384900Z               "line": 122
2026-06-20T11:21:58.8385013Z             }
2026-06-20T11:21:58.8385128Z           ]
2026-06-20T11:21:58.8385234Z         }
2026-06-20T11:21:58.8385352Z       }
2026-06-20T11:21:58.8385472Z     },
2026-06-20T11:21:58.8385577Z     {
2026-06-20T11:21:58.8385722Z       "id": "REQ-MSG-IDLE-TRANSLATION-BINARY",
2026-06-20T11:21:58.8390907Z       "title": "spt-hosted idle message delivery via an adapter TRANSLATION BINARY (ADR-0022). New opt-in manifest section `[message-idle-translation-binary]` = a TABLE carrying a `path` scalar (doyle OPT-B ruling: modeled as a table, not a bare top-level scalar, so a preceding section cannot silently absorb it + N+1 extensible; spt-core does NOT deny_unknown_fields, so a future key degrades gracefully); spt-core LIFECYCLE-manages it (spawn when the endpoint comes up, terminate when it goes down). The binary is a PURE stdin→stdout filter; spt-core owns EVERY PTY write. stdin (JSON-lines): `{type:\"init\",endpoint_id,node}` first · `{type:\"event\",envelope:\"<EVENT…>\"}` per inbound message (ADR-0020 envelope) · `{type:\"input\"}` content-free ping on each operator keystroke (binary tracks user-idle for its own idle-gated buffering; PTY input content NOT duplicated). stdout (JSON-lines): keystroke-commands `{key:…}`/`{delay_ms:…}`/`{text:…}` (extensible). spt-core applies the emitted sequence to the broker PTY ATOMICALLY (the W1 coordination — REQ-HAZARD-INJECT-CONTROL-COEXIST). The daemon poll feed is the ONE idle substrate for both topologies (Q1=A): harness-hosted consumer = the Monitor child, spt-hosted consumer = this binary; spt-core PREFERS a perch's poll listener if one exists (so spt-hosted can run a listener AND keep `spt rc`). Idle-only; busy/mid-turn = adapter hook-injection. Closes the current grounding gap: `api bind` registers no listener port → a listener-less spt-hosted perch SPOOLS inbound (only spooling+adapter-poll works today) → this delivers real inbound into the PTY. The v0.11.0 raw inject is the degenerate `{text:payload}{key:enter}` case. (v0.13.0)",
2026-06-20T11:21:58.8391281Z       "requiredStages": [
2026-06-20T11:21:58.8391395Z         "doc",
2026-06-20T11:21:58.8391514Z         "impl",
2026-06-20T11:21:58.8391620Z         "unit",
2026-06-20T11:21:58.8391743Z         "int"
2026-06-20T11:21:58.8391848Z       ],
2026-06-20T11:21:58.8391967Z       "stages": {
2026-06-20T11:21:58.8392081Z         "doc": {
2026-06-20T11:21:58.8392211Z           "complete": true,
2026-06-20T11:21:58.8392330Z           "evidence": [
2026-06-20T11:21:58.8392435Z             {
2026-06-20T11:21:58.8392602Z               "path": "docs-site/src/harness-contract/manifest.md",
2026-06-20T11:21:58.8392725Z               "line": 277
2026-06-20T11:21:58.8392836Z             },
2026-06-20T11:21:58.8392945Z             {
2026-06-20T11:21:58.8393069Z               "path": "docs/MANIFEST.md",
2026-06-20T11:21:58.8393190Z               "line": 198
2026-06-20T11:21:58.8393293Z             }
2026-06-20T11:21:58.8393406Z           ]
2026-06-20T11:21:58.8393516Z         },
2026-06-20T11:21:58.8393628Z         "impl": {
2026-06-20T11:21:58.8393742Z           "complete": true,
2026-06-20T11:21:58.8393862Z           "evidence": [
2026-06-20T11:21:58.8393971Z             {
2026-06-20T11:21:58.8394109Z               "path": "crates/spt-daemon/src/broker.rs",
2026-06-20T11:21:58.8394229Z               "line": 939
2026-06-20T11:21:58.8394343Z             },
2026-06-20T11:21:58.8394449Z             {
2026-06-20T11:21:58.8394606Z               "path": "crates/spt-daemon/src/translation.rs",
2026-06-20T11:21:58.8394725Z               "line": 23
2026-06-20T11:21:58.8394839Z             },
2026-06-20T11:21:58.8394944Z             {
2026-06-20T11:21:58.8395088Z               "path": "crates/spt-daemon/src/translation.rs",
2026-06-20T11:21:58.8395211Z               "line": 91
2026-06-20T11:21:58.8395325Z             },
2026-06-20T11:21:58.8395441Z             {
2026-06-20T11:21:58.8395578Z               "path": "crates/spt-daemon/src/translation.rs",
2026-06-20T11:21:58.8395703Z               "line": 239
2026-06-20T11:21:58.8395808Z             },
2026-06-20T11:21:58.8395931Z             {
2026-06-20T11:21:58.8396080Z               "path": "crates/spt-daemon/src/translation.rs",
2026-06-20T11:21:58.8396197Z               "line": 287
2026-06-20T11:21:58.8396311Z             },
2026-06-20T11:21:58.8396412Z             {
2026-06-20T11:21:58.8396564Z               "path": "crates/spt-daemon/src/translation.rs",
2026-06-20T11:21:58.8396684Z               "line": 311
2026-06-20T11:21:58.8396798Z             },
2026-06-20T11:21:58.8396916Z             {
2026-06-20T11:21:58.8397066Z               "path": "crates/spt-runtime/src/manifest.rs",
2026-06-20T11:21:58.8397189Z               "line": 60
2026-06-20T11:21:58.8397380Z             },
2026-06-20T11:21:58.8397495Z             {
2026-06-20T11:21:58.8397638Z               "path": "crates/spt-runtime/src/manifest.rs",
2026-06-20T11:21:58.8397752Z               "line": 889
2026-06-20T11:21:58.8397857Z             }
2026-06-20T11:21:58.8397968Z           ]
2026-06-20T11:21:58.8398086Z         },
2026-06-20T11:21:58.8398185Z         "int": {
2026-06-20T11:21:58.8398315Z           "complete": true,
2026-06-20T11:21:58.8398429Z           "evidence": [
2026-06-20T11:21:58.8398533Z             {
2026-06-20T11:21:58.8398694Z               "path": "crates/spt-daemon/tests/inject_control_wedge.rs",
2026-06-20T11:21:58.8398807Z               "line": 1034
2026-06-20T11:21:58.8399069Z             },
2026-06-20T11:21:58.8399188Z             {
2026-06-20T11:21:58.8399375Z               "path": "crates/spt-daemon/tests/inject_control_wedge.rs",
2026-06-20T11:21:58.8399498Z               "line": 1139
2026-06-20T11:21:58.8399609Z             },
2026-06-20T11:21:58.8399732Z             {
2026-06-20T11:21:58.8399885Z               "path": "crates/spt-daemon/tests/inject_control_wedge.rs",
2026-06-20T11:21:58.8400004Z               "line": 1207
2026-06-20T11:21:58.8400113Z             },
2026-06-20T11:21:58.8400219Z             {
2026-06-20T11:21:58.8400385Z               "path": "crates/spt-daemon/tests/inject_control_wedge.rs",
2026-06-20T11:21:58.8400500Z               "line": 1300
2026-06-20T11:21:58.8400619Z             }
2026-06-20T11:21:58.8400728Z           ]
2026-06-20T11:21:58.8400853Z         },
2026-06-20T11:21:58.8400958Z         "unit": {
2026-06-20T11:21:58.8401091Z           "complete": true,
2026-06-20T11:21:58.8401211Z           "evidence": [
2026-06-20T11:21:58.8401324Z             {
2026-06-20T11:21:58.8401481Z               "path": "crates/spt-daemon/src/harnesshost.rs",
2026-06-20T11:21:58.8401594Z               "line": 270
2026-06-20T11:21:58.8401702Z             },
2026-06-20T11:21:58.8401803Z             {
2026-06-20T11:21:58.8401951Z               "path": "crates/spt-daemon/src/translation.rs",
2026-06-20T11:21:58.8402065Z               "line": 350
2026-06-20T11:21:58.8402194Z             },
2026-06-20T11:21:58.8402317Z             {
2026-06-20T11:21:58.8402462Z               "path": "crates/spt-daemon/src/translation.rs",
2026-06-20T11:21:58.8402581Z               "line": 381
2026-06-20T11:21:58.8402684Z             },
2026-06-20T11:21:58.8402810Z             {
2026-06-20T11:21:58.8402951Z               "path": "crates/spt-daemon/src/translation.rs",
2026-06-20T11:21:58.8403072Z               "line": 411
2026-06-20T11:21:58.8403185Z             },
2026-06-20T11:21:58.8403295Z             {
2026-06-20T11:21:58.8403444Z               "path": "crates/spt-daemon/src/translation.rs",
2026-06-20T11:21:58.8403562Z               "line": 440
2026-06-20T11:21:58.8403667Z             },
2026-06-20T11:21:58.8403774Z             {
2026-06-20T11:21:58.8403919Z               "path": "crates/spt-runtime/src/manifest.rs",
2026-06-20T11:21:58.8404033Z               "line": 1181
2026-06-20T11:21:58.8404142Z             }
2026-06-20T11:21:58.8404250Z           ]
2026-06-20T11:21:58.8404360Z         }
2026-06-20T11:21:58.8404475Z       }
2026-06-20T11:21:58.8404589Z     },
2026-06-20T11:21:58.8404694Z     {
2026-06-20T11:21:58.8404813Z       "id": "REQ-NET-1",
2026-06-20T11:21:58.8405014Z       "title": "WAN messaging first-class, behind default-on net feature flag",
2026-06-20T11:21:58.8405128Z       "requiredStages": [
2026-06-20T11:21:58.8405237Z         "impl",
2026-06-20T11:21:58.8405353Z         "unit",
2026-06-20T11:21:58.8405461Z         "int"
2026-06-20T11:21:58.8405571Z       ],
2026-06-20T11:21:58.8405687Z       "stages": {
2026-06-20T11:21:58.8405795Z         "doc": {
2026-06-20T11:21:58.8405929Z           "complete": false,
2026-06-20T11:21:58.8406043Z           "evidence": []
2026-06-20T11:21:58.8406158Z         },
2026-06-20T11:21:58.8406278Z         "impl": {
2026-06-20T11:21:58.8406396Z           "complete": true,
2026-06-20T11:21:58.8406511Z           "evidence": [
2026-06-20T11:21:58.8406757Z             {
2026-06-20T11:21:58.8406919Z               "path": "crates/spt-daemon/src/dispatch.rs",
2026-06-20T11:21:58.8407035Z               "line": 54
2026-06-20T11:21:58.8407143Z             },
2026-06-20T11:21:58.8407254Z             {
2026-06-20T11:21:58.8407383Z               "path": "crates/spt-daemon/src/dispatch.rs",
2026-06-20T11:21:58.8407500Z               "line": 594
2026-06-20T11:21:58.8407611Z             },
2026-06-20T11:21:58.8407721Z             {
2026-06-20T11:21:58.8407850Z               "path": "crates/spt-daemon/src/wan.rs",
2026-06-20T11:21:58.8407969Z               "line": 130
2026-06-20T11:21:58.8408069Z             },
2026-06-20T11:21:58.8408265Z             {
2026-06-20T11:21:58.8408417Z               "path": "crates/spt-net/src/net/endpoint.rs",
2026-06-20T11:21:58.8408533Z               "line": 97
2026-06-20T11:21:58.8408636Z             },
2026-06-20T11:21:58.8408741Z             {
2026-06-20T11:21:58.8408885Z               "path": "crates/spt-net/src/net/endpoint.rs",
2026-06-20T11:21:58.8409078Z               "line": 159
2026-06-20T11:21:58.8409184Z             },
2026-06-20T11:21:58.8409292Z             {
2026-06-20T11:21:58.8409433Z               "path": "crates/spt-net/src/net/endpoint.rs",
2026-06-20T11:21:58.8409554Z               "line": 175
2026-06-20T11:21:58.8409672Z             },
2026-06-20T11:21:58.8409781Z             {
2026-06-20T11:21:58.8409925Z               "path": "crates/spt-net/src/net/endpoint.rs",
2026-06-20T11:21:58.8410043Z               "line": 190
2026-06-20T11:21:58.8410154Z             },
2026-06-20T11:21:58.8410269Z             {
2026-06-20T11:21:58.8410416Z               "path": "crates/spt-net/src/net/endpoint.rs",
2026-06-20T11:21:58.8410545Z               "line": 271
2026-06-20T11:21:58.8410650Z             },
2026-06-20T11:21:58.8410755Z             {
2026-06-20T11:21:58.8410897Z               "path": "crates/spt-net/src/net/endpoint.rs",
2026-06-20T11:21:58.8411021Z               "line": 306
2026-06-20T11:21:58.8411127Z             },
2026-06-20T11:21:58.8411231Z             {
2026-06-20T11:21:58.8411375Z               "path": "crates/spt-net/src/net/endpoint.rs",
2026-06-20T11:21:58.8411490Z               "line": 312
2026-06-20T11:21:58.8411599Z             },
2026-06-20T11:21:58.8411700Z             {
2026-06-20T11:21:58.8411847Z               "path": "crates/spt-net/src/net/endpoint.rs",
2026-06-20T11:21:58.8411964Z               "line": 318
2026-06-20T11:21:58.8412084Z             },
2026-06-20T11:21:58.8412192Z             {
2026-06-20T11:21:58.8412334Z               "path": "crates/spt-net/src/net/endpoint.rs",
2026-06-20T11:21:58.8412463Z               "line": 334
2026-06-20T11:21:58.8412572Z             },
2026-06-20T11:21:58.8412692Z             {
2026-06-20T11:21:58.8412826Z               "path": "crates/spt-net/src/net/endpoint.rs",
2026-06-20T11:21:58.8412949Z               "line": 354
2026-06-20T11:21:58.8413060Z             },
2026-06-20T11:21:58.8413169Z             {
2026-06-20T11:21:58.8413322Z               "path": "crates/spt-net/src/net/wanmsg.rs",
2026-06-20T11:21:58.8413440Z               "line": 35
2026-06-20T11:21:58.8413559Z             },
2026-06-20T11:21:58.8413670Z             {
2026-06-20T11:21:58.8413812Z               "path": "crates/spt-net/src/net/wanmsg.rs",
2026-06-20T11:21:58.8413932Z               "line": 85
2026-06-20T11:21:58.8414047Z             },
2026-06-20T11:21:58.8414160Z             {
2026-06-20T11:21:58.8414290Z               "path": "crates/spt-store/src/spool.rs",
2026-06-20T11:21:58.8414404Z               "line": 138
2026-06-20T11:21:58.8414512Z             },
2026-06-20T11:21:58.8414622Z             {
2026-06-20T11:21:58.8414753Z               "path": "crates/spt/src/cli.rs",
2026-06-20T11:21:58.8414876Z               "line": 2953
2026-06-20T11:21:58.8414992Z             },
2026-06-20T11:21:58.8415101Z             {
2026-06-20T11:21:58.8415230Z               "path": "crates/spt/src/wansend.rs",
2026-06-20T11:21:58.8415349Z               "line": 17
2026-06-20T11:21:58.8415559Z             }
2026-06-20T11:21:58.8415669Z           ]
2026-06-20T11:21:58.8415778Z         },
2026-06-20T11:21:58.8415898Z         "int": {
2026-06-20T11:21:58.8416021Z           "complete": true,
2026-06-20T11:21:58.8416140Z           "evidence": [
2026-06-20T11:21:58.8416256Z             {
2026-06-20T11:21:58.8416403Z               "path": "crates/spt-daemon/tests/dispatch.rs",
2026-06-20T11:21:58.8416528Z               "line": 341
2026-06-20T11:21:58.8416641Z             },
2026-06-20T11:21:58.8416756Z             {
2026-06-20T11:21:58.8416895Z               "path": "crates/spt-daemon/tests/twohost.rs",
2026-06-20T11:21:58.8417018Z               "line": 675
2026-06-20T11:21:58.8417224Z             },
2026-06-20T11:21:58.8417322Z             {
2026-06-20T11:21:58.8417470Z               "path": "crates/spt-daemon/tests/twohost.rs",
2026-06-20T11:21:58.8417581Z               "line": 973
2026-06-20T11:21:58.8417699Z             }
2026-06-20T11:21:58.8417804Z           ]
2026-06-20T11:21:58.8417909Z         },
2026-06-20T11:21:58.8418023Z         "unit": {
2026-06-20T11:21:58.8418144Z           "complete": true,
2026-06-20T11:21:58.8418267Z           "evidence": [
2026-06-20T11:21:58.8418366Z             {
2026-06-20T11:21:58.8418514Z               "path": "crates/spt-daemon/src/dispatch.rs",
2026-06-20T11:21:58.8418629Z               "line": 651
2026-06-20T11:21:58.8418748Z             },
2026-06-20T11:21:58.8418872Z             {
2026-06-20T11:21:58.8419093Z               "path": "crates/spt-daemon/src/dispatch.rs",
2026-06-20T11:21:58.8419215Z               "line": 686
2026-06-20T11:21:58.8419329Z             },
2026-06-20T11:21:58.8419441Z             {
2026-06-20T11:21:58.8419591Z               "path": "crates/spt-daemon/tests/dispatch.rs",
2026-06-20T11:21:58.8419705Z               "line": 940
2026-06-20T11:21:58.8419824Z             },
2026-06-20T11:21:58.8419922Z             {
2026-06-20T11:21:58.8420071Z               "path": "crates/spt-daemon/tests/wanmsg.rs",
2026-06-20T11:21:58.8420176Z               "line": 201
2026-06-20T11:21:58.8420289Z             },
2026-06-20T11:21:58.8420399Z             {
2026-06-20T11:21:58.8420547Z               "path": "crates/spt-net/src/net/endpoint.rs",
2026-06-20T11:21:58.8420661Z               "line": 442
2026-06-20T11:21:58.8420767Z             },
2026-06-20T11:21:58.8420876Z             {
2026-06-20T11:21:58.8421020Z               "path": "crates/spt-net/src/net/endpoint.rs",
2026-06-20T11:21:58.8421143Z               "line": 456
2026-06-20T11:21:58.8421252Z             },
2026-06-20T11:21:58.8421377Z             {
2026-06-20T11:21:58.8421534Z               "path": "crates/spt-net/src/net/endpoint.rs",
2026-06-20T11:21:58.8421650Z               "line": 475
2026-06-20T11:21:58.8421763Z             },
2026-06-20T11:21:58.8421868Z             {
2026-06-20T11:21:58.8422007Z               "path": "crates/spt-net/src/net/wanmsg.rs",
2026-06-20T11:21:58.8422115Z               "line": 120
2026-06-20T11:21:58.8422236Z             },
2026-06-20T11:21:58.8422346Z             {
2026-06-20T11:21:58.8422477Z               "path": "crates/spt-net/src/net/wanmsg.rs",
2026-06-20T11:21:58.8422591Z               "line": 163
2026-06-20T11:21:58.8422705Z             },
2026-06-20T11:21:58.8422817Z             {
2026-06-20T11:21:58.8422952Z               "path": "crates/spt-store/src/spool.rs",
2026-06-20T11:21:58.8423071Z               "line": 530
2026-06-20T11:21:58.8423195Z             },
2026-06-20T11:21:58.8423305Z             {
2026-06-20T11:21:58.8423438Z               "path": "crates/spt/src/wansend.rs",
2026-06-20T11:21:58.8423553Z               "line": 616
2026-06-20T11:21:58.8423662Z             },
2026-06-20T11:21:58.8423781Z             {
2026-06-20T11:21:58.8423911Z               "path": "crates/spt/src/wansend.rs",
2026-06-20T11:21:58.8424034Z               "line": 1006
2026-06-20T11:21:58.8424144Z             }
2026-06-20T11:21:58.8424259Z           ]
2026-06-20T11:21:58.8424362Z         }
2026-06-20T11:21:58.8424468Z       }
2026-06-20T11:21:58.8424588Z     },
2026-06-20T11:21:58.8424807Z     {
2026-06-20T11:21:58.8424932Z       "id": "REQ-NET-2",
2026-06-20T11:21:58.8425134Z       "title": "n0 relay default + self-host knob + plain-language disclosure",
2026-06-20T11:21:58.8425249Z       "requiredStages": [
2026-06-20T11:21:58.8425356Z         "impl"
2026-06-20T11:21:58.8425476Z       ],
2026-06-20T11:21:58.8425581Z       "stages": {
2026-06-20T11:21:58.8425689Z         "doc": {
2026-06-20T11:21:58.8425814Z           "complete": false,
2026-06-20T11:21:58.8425929Z           "evidence": []
2026-06-20T11:21:58.8426042Z         },
2026-06-20T11:21:58.8426163Z         "impl": {
2026-06-20T11:21:58.8426282Z           "complete": true,
2026-06-20T11:21:58.8426492Z           "evidence": [
2026-06-20T11:21:58.8426611Z             {
2026-06-20T11:21:58.8426763Z               "path": "crates/spt-daemon/src/config.rs",
2026-06-20T11:21:58.8426891Z               "line": 57
2026-06-20T11:21:58.8427006Z             },
2026-06-20T11:21:58.8427107Z             {
2026-06-20T11:21:58.8427249Z               "path": "crates/spt-net/src/net/endpoint.rs",
2026-06-20T11:21:58.8427374Z               "line": 71
2026-06-20T11:21:58.8427484Z             },
2026-06-20T11:21:58.8427593Z             {
2026-06-20T11:21:58.8427722Z               "path": "crates/spt-net/src/net/endpoint.rs",
2026-06-20T11:21:58.8427845Z               "line": 81
2026-06-20T11:21:58.8427954Z             },
2026-06-20T11:21:58.8428059Z             {
2026-06-20T11:21:58.8428206Z               "path": "crates/spt-net/src/net/endpoint.rs",
2026-06-20T11:21:58.8428316Z               "line": 159
2026-06-20T11:21:58.8428436Z             },
2026-06-20T11:21:58.8428540Z             {
2026-06-20T11:21:58.8428694Z               "path": "crates/spt-net/src/net/endpoint.rs",
2026-06-20T11:21:58.8428803Z               "line": 175
2026-06-20T11:21:58.8428912Z             },
2026-06-20T11:21:58.8429108Z             {
2026-06-20T11:21:58.8429251Z               "path": "crates/spt-net/src/net/endpoint.rs",
2026-06-20T11:21:58.8429367Z               "line": 190
2026-06-20T11:21:58.8429480Z             }
2026-06-20T11:21:58.8429594Z           ]
2026-06-20T11:21:58.8429705Z         },
2026-06-20T11:21:58.8429818Z         "int": {
2026-06-20T11:21:58.8429938Z           "complete": false,
2026-06-20T11:21:58.8430057Z           "evidence": []
2026-06-20T11:21:58.8430166Z         },
2026-06-20T11:21:58.8430260Z         "unit": {
2026-06-20T11:21:58.8430379Z           "complete": true,
2026-06-20T11:21:58.8430487Z           "evidence": [
2026-06-20T11:21:58.8430606Z             {
2026-06-20T11:21:58.8430745Z               "path": "crates/spt-daemon/src/config.rs",
2026-06-20T11:21:58.8430863Z               "line": 402
2026-06-20T11:21:58.8430984Z             }
2026-06-20T11:21:58.8431088Z           ]
2026-06-20T11:21:58.8431202Z         }
2026-06-20T11:21:58.8431313Z       }
2026-06-20T11:21:58.8431421Z     },
2026-06-20T11:21:58.8431546Z     {
2026-06-20T11:21:58.8431665Z       "id": "REQ-NET-3",
2026-06-20T11:21:58.8431870Z       "title": "Cross-node Psyche sync over P2P replaces gh-repo-sync",
2026-06-20T11:21:58.8432004Z       "requiredStages": [
2026-06-20T11:21:58.8432118Z         "impl",
2026-06-20T11:21:58.8432229Z         "unit"
2026-06-20T11:21:58.8432351Z       ],
2026-06-20T11:21:58.8432476Z       "stages": {
2026-06-20T11:21:58.8432576Z         "doc": {
2026-06-20T11:21:58.8432699Z           "complete": false,
2026-06-20T11:21:58.8432806Z           "evidence": []
2026-06-20T11:21:58.8432925Z         },
2026-06-20T11:21:58.8433028Z         "impl": {
2026-06-20T11:21:58.8433142Z           "complete": true,
2026-06-20T11:21:58.8433256Z           "evidence": [
2026-06-20T11:21:58.8433368Z             {
2026-06-20T11:21:58.8433517Z               "path": "crates/spt-daemon/src/sync.rs",
2026-06-20T11:21:58.8433636Z               "line": 39
2026-06-20T11:21:58.8433755Z             },
2026-06-20T11:21:58.8433861Z             {
2026-06-20T11:21:58.8434008Z               "path": "crates/spt-daemon/src/sync.rs",
2026-06-20T11:21:58.8434123Z               "line": 182
2026-06-20T11:21:58.8434341Z             },
2026-06-20T11:21:58.8434461Z             {
2026-06-20T11:21:58.8434594Z               "path": "crates/spt-daemon/src/sync.rs",
2026-06-20T11:21:58.8434704Z               "line": 333
2026-06-20T11:21:58.8434814Z             },
2026-06-20T11:21:58.8434918Z             {
2026-06-20T11:21:58.8435067Z               "path": "crates/spt-net/src/net/sync.rs",
2026-06-20T11:21:58.8435172Z               "line": 36
2026-06-20T11:21:58.8435276Z             },
2026-06-20T11:21:58.8435387Z             {
2026-06-20T11:21:58.8435538Z               "path": "crates/spt-store/src/branchstore.rs",
2026-06-20T11:21:58.8435656Z               "line": 158
2026-06-20T11:21:58.8435888Z             },
2026-06-20T11:21:58.8436006Z             {
2026-06-20T11:21:58.8436156Z               "path": "crates/spt-store/src/branchstore.rs",
2026-06-20T11:21:58.8436273Z               "line": 238
2026-06-20T11:21:58.8436384Z             },
2026-06-20T11:21:58.8436494Z             {
2026-06-20T11:21:58.8436631Z               "path": "crates/spt-store/src/branchstore.rs",
2026-06-20T11:21:58.8436751Z               "line": 259
2026-06-20T11:21:58.8436865Z             },
2026-06-20T11:21:58.8436975Z             {
2026-06-20T11:21:58.8437127Z               "path": "crates/spt-store/src/branchstore.rs",
2026-06-20T11:21:58.8437237Z               "line": 317
2026-06-20T11:21:58.8437353Z             },
2026-06-20T11:21:58.8437461Z             {
2026-06-20T11:21:58.8437609Z               "path": "crates/spt-store/src/branchstore.rs",
2026-06-20T11:21:58.8437720Z               "line": 336
2026-06-20T11:21:58.8437824Z             },
2026-06-20T11:21:58.8437939Z             {
2026-06-20T11:21:58.8438086Z               "path": "crates/spt-store/src/branchstore.rs",
2026-06-20T11:21:58.8438205Z               "line": 374
2026-06-20T11:21:58.8438311Z             },
2026-06-20T11:21:58.8438415Z             {
2026-06-20T11:21:58.8438561Z               "path": "crates/spt-store/src/branchstore.rs",
2026-06-20T11:21:58.8438667Z               "line": 419
2026-06-20T11:21:58.8438786Z             },
2026-06-20T11:21:58.8438895Z             {
2026-06-20T11:21:58.8439114Z               "path": "crates/spt-store/src/branchstore.rs",
2026-06-20T11:21:58.8439220Z               "line": 432
2026-06-20T11:21:58.8439320Z             },
2026-06-20T11:21:58.8439438Z             {
2026-06-20T11:21:58.8439583Z               "path": "crates/spt-store/src/syncmerge.rs",
2026-06-20T11:21:58.8439696Z               "line": 29
2026-06-20T11:21:58.8439801Z             },
2026-06-20T11:21:58.8439922Z             {
2026-06-20T11:21:58.8440064Z               "path": "crates/spt-store/src/syncmerge.rs",
2026-06-20T11:21:58.8440189Z               "line": 72
2026-06-20T11:21:58.8440302Z             },
2026-06-20T11:21:58.8440407Z             {
2026-06-20T11:21:58.8440556Z               "path": "crates/spt-store/src/syncmerge.rs",
2026-06-20T11:21:58.8440673Z               "line": 123
2026-06-20T11:21:58.8440782Z             }
2026-06-20T11:21:58.8440897Z           ]
2026-06-20T11:21:58.8441009Z         },
2026-06-20T11:21:58.8441128Z         "int": {
2026-06-20T11:21:58.8441234Z           "complete": false,
2026-06-20T11:21:58.8441353Z           "evidence": []
2026-06-20T11:21:58.8441462Z         },
2026-06-20T11:21:58.8441573Z         "unit": {
2026-06-20T11:21:58.8441700Z           "complete": true,
2026-06-20T11:21:58.8441811Z           "evidence": [
2026-06-20T11:21:58.8441920Z             {
2026-06-20T11:21:58.8442062Z               "path": "crates/spt-daemon/tests/sync.rs",
2026-06-20T11:21:58.8442183Z               "line": 223
2026-06-20T11:21:58.8442292Z             },
2026-06-20T11:21:58.8442411Z             {
2026-06-20T11:21:58.8442554Z               "path": "crates/spt-daemon/tests/sync.rs",
2026-06-20T11:21:58.8442664Z               "line": 351
2026-06-20T11:21:58.8442775Z             },
2026-06-20T11:21:58.8442878Z             {
2026-06-20T11:21:58.8443026Z               "path": "crates/spt-daemon/tests/sync.rs",
2026-06-20T11:21:58.8443141Z               "line": 504
2026-06-20T11:21:58.8443361Z             },
2026-06-20T11:21:58.8443485Z             {
2026-06-20T11:21:58.8443621Z               "path": "crates/spt-net/src/net/sync.rs",
2026-06-20T11:21:58.8443736Z               "line": 93
2026-06-20T11:21:58.8443848Z             },
2026-06-20T11:21:58.8443957Z             {
2026-06-20T11:21:58.8444101Z               "path": "crates/spt-net/src/net/sync.rs",
2026-06-20T11:21:58.8444225Z               "line": 142
2026-06-20T11:21:58.8444339Z             },
2026-06-20T11:21:58.8444454Z             {
2026-06-20T11:21:58.8444600Z               "path": "crates/spt-store/src/syncmerge.rs",
2026-06-20T11:21:58.8444726Z               "line": 315
2026-06-20T11:21:58.8444934Z             },
2026-06-20T11:21:58.8445050Z             {
2026-06-20T11:21:58.8445192Z               "path": "crates/spt-store/src/syncmerge.rs",
2026-06-20T11:21:58.8445302Z               "line": 355
2026-06-20T11:21:58.8445417Z             },
2026-06-20T11:21:58.8445526Z             {
2026-06-20T11:21:58.8445675Z               "path": "crates/spt-store/src/syncmerge.rs",
2026-06-20T11:21:58.8445788Z               "line": 494
2026-06-20T11:21:58.8445908Z             }
2026-06-20T11:21:58.8446014Z           ]
2026-06-20T11:21:58.8446131Z         }
2026-06-20T11:21:58.8446240Z       }
2026-06-20T11:21:58.8446350Z     },
2026-06-20T11:21:58.8446467Z     {
2026-06-20T11:21:58.8446601Z       "id": "REQ-NODE-IDENTITY",
2026-06-20T11:21:58.8446838Z       "title": "Ed25519 identity primitive: keypair, detached sign/verify, stable pubkey<->hex",
2026-06-20T11:21:58.8446968Z       "requiredStages": [
2026-06-20T11:21:58.8447073Z         "impl",
2026-06-20T11:21:58.8447196Z         "unit"
2026-06-20T11:21:58.8447321Z       ],
2026-06-20T11:21:58.8447426Z       "stages": {
2026-06-20T11:21:58.8447535Z         "doc": {
2026-06-20T11:21:58.8447645Z           "complete": false,
2026-06-20T11:21:58.8447769Z           "evidence": []
2026-06-20T11:21:58.8447884Z         },
2026-06-20T11:21:58.8447993Z         "impl": {
2026-06-20T11:21:58.8448107Z           "complete": true,
2026-06-20T11:21:58.8448213Z           "evidence": [
2026-06-20T11:21:58.8448331Z             {
2026-06-20T11:21:58.8448475Z               "path": "crates/spt-proto/src/identity.rs",
2026-06-20T11:21:58.8448595Z               "line": 60
2026-06-20T11:21:58.8448713Z             },
2026-06-20T11:21:58.8448814Z             {
2026-06-20T11:21:58.8449041Z               "path": "crates/spt-proto/src/identity.rs",
2026-06-20T11:21:58.8449160Z               "line": 68
2026-06-20T11:21:58.8449281Z             },
2026-06-20T11:21:58.8449379Z             {
2026-06-20T11:21:58.8449518Z               "path": "crates/spt-proto/src/identity.rs",
2026-06-20T11:21:58.8449647Z               "line": 86
2026-06-20T11:21:58.8449756Z             },
2026-06-20T11:21:58.8449876Z             {
2026-06-20T11:21:58.8450013Z               "path": "crates/spt-proto/src/identity.rs",
2026-06-20T11:21:58.8450133Z               "line": 120
2026-06-20T11:21:58.8450238Z             },
2026-06-20T11:21:58.8450347Z             {
2026-06-20T11:21:58.8450487Z               "path": "crates/spt-proto/src/identity.rs",
2026-06-20T11:21:58.8450600Z               "line": 127
2026-06-20T11:21:58.8450719Z             },
2026-06-20T11:21:58.8450835Z             {
2026-06-20T11:21:58.8450971Z               "path": "crates/spt-proto/src/identity.rs",
2026-06-20T11:21:58.8451087Z               "line": 143
2026-06-20T11:21:58.8451191Z             },
2026-06-20T11:21:58.8451310Z             {
2026-06-20T11:21:58.8451443Z               "path": "crates/spt-store/src/nodeid.rs",
2026-06-20T11:21:58.8451569Z               "line": 16
2026-06-20T11:21:58.8451673Z             }
2026-06-20T11:21:58.8451789Z           ]
2026-06-20T11:21:58.8451898Z         },
2026-06-20T11:21:58.8452013Z         "int": {
2026-06-20T11:21:58.8452128Z           "complete": false,
2026-06-20T11:21:58.8452236Z           "evidence": []
2026-06-20T11:21:58.8452356Z         },
2026-06-20T11:21:58.8452466Z         "unit": {
2026-06-20T11:21:58.8452700Z           "complete": true,
2026-06-20T11:21:58.8452833Z           "evidence": [
2026-06-20T11:21:58.8452947Z             {
2026-06-20T11:21:58.8453091Z               "path": "crates/spt-proto/src/identity.rs",
2026-06-20T11:21:58.8453205Z               "line": 199
2026-06-20T11:21:58.8453315Z             },
2026-06-20T11:21:58.8453429Z             {
2026-06-20T11:21:58.8453572Z               "path": "crates/spt-proto/src/identity.rs",
2026-06-20T11:21:58.8453693Z               "line": 218
2026-06-20T11:21:58.8453800Z             },
2026-06-20T11:21:58.8453916Z             {
2026-06-20T11:21:58.8454059Z               "path": "crates/spt-proto/src/identity.rs",
2026-06-20T11:21:58.8454272Z               "line": 234
2026-06-20T11:21:58.8454380Z             },
2026-06-20T11:21:58.8454489Z             {
2026-06-20T11:21:58.8454632Z               "path": "crates/spt-proto/src/identity.rs",
2026-06-20T11:21:58.8454747Z               "line": 256
2026-06-20T11:21:58.8454855Z             },
2026-06-20T11:21:58.8454962Z             {
2026-06-20T11:21:58.8455104Z               "path": "crates/spt-store/src/nodeid.rs",
2026-06-20T11:21:58.8455219Z               "line": 124
2026-06-20T11:21:58.8455328Z             },
2026-06-20T11:21:58.8455447Z             {
2026-06-20T11:21:58.8455587Z               "path": "crates/spt-store/src/nodeid.rs",
2026-06-20T11:21:58.8455710Z               "line": 140
2026-06-20T11:21:58.8455814Z             },
2026-06-20T11:21:58.8455925Z             {
2026-06-20T11:21:58.8456057Z               "path": "crates/spt-store/src/nodeid.rs",
2026-06-20T11:21:58.8456173Z               "line": 155
2026-06-20T11:21:58.8456283Z             }
2026-06-20T11:21:58.8456396Z           ]
2026-06-20T11:21:58.8456502Z         }
2026-06-20T11:21:58.8456607Z       }
2026-06-20T11:21:58.8456724Z     },
2026-06-20T11:21:58.8456843Z     {
2026-06-20T11:21:58.8456985Z       "id": "REQ-NOTIF-1",
2026-06-20T11:21:58.8457356Z       "title": "Notification primitive: per-subnet replicated spool, seen/dismissed, resurface-at-boundary, subsumes update+consent prompts",
2026-06-20T11:21:58.8457470Z       "requiredStages": [
2026-06-20T11:21:58.8457576Z         "impl",
2026-06-20T11:21:58.8457690Z         "unit",
2026-06-20T11:21:58.8457805Z         "int"
2026-06-20T11:21:58.8457924Z       ],
2026-06-20T11:21:58.8458037Z       "stages": {
2026-06-20T11:21:58.8458148Z         "doc": {
2026-06-20T11:21:58.8458271Z           "complete": false,
2026-06-20T11:21:58.8458391Z           "evidence": []
2026-06-20T11:21:58.8458497Z         },
2026-06-20T11:21:58.8458615Z         "impl": {
2026-06-20T11:21:58.8458734Z           "complete": true,
2026-06-20T11:21:58.8458844Z           "evidence": [
2026-06-20T11:21:58.8459049Z             {
2026-06-20T11:21:58.8459192Z               "path": "crates/spt-daemon/src/dispatch.rs",
2026-06-20T11:21:58.8459311Z               "line": 514
2026-06-20T11:21:58.8459427Z             },
2026-06-20T11:21:58.8459549Z             {
2026-06-20T11:21:58.8459696Z               "path": "crates/spt-daemon/src/notif.rs",
2026-06-20T11:21:58.8459802Z               "line": 30
2026-06-20T11:21:58.8459915Z             },
2026-06-20T11:21:58.8460035Z             {
2026-06-20T11:21:58.8460179Z               "path": "crates/spt-daemon/src/notif.rs",
2026-06-20T11:21:58.8460282Z               "line": 69
2026-06-20T11:21:58.8460393Z             },
2026-06-20T11:21:58.8460493Z             {
2026-06-20T11:21:58.8460621Z               "path": "crates/spt-daemon/src/notif.rs",
2026-06-20T11:21:58.8460741Z               "line": 93
2026-06-20T11:21:58.8460846Z             },
2026-06-20T11:21:58.8460960Z             {
2026-06-20T11:21:58.8461099Z               "path": "crates/spt-daemon/src/notif.rs",
2026-06-20T11:21:58.8461226Z               "line": 107
2026-06-20T11:21:58.8461342Z             },
2026-06-20T11:21:58.8461451Z             {
2026-06-20T11:21:58.8461594Z               "path": "crates/spt-daemon/src/notif.rs",
2026-06-20T11:21:58.8461710Z               "line": 142
2026-06-20T11:21:58.8461827Z             },
2026-06-20T11:21:58.8462037Z             {
2026-06-20T11:21:58.8462182Z               "path": "crates/spt-daemon/src/notif.rs",
2026-06-20T11:21:58.8462296Z               "line": 187
2026-06-20T11:21:58.8462403Z             },
2026-06-20T11:21:58.8462525Z             {
2026-06-20T11:21:58.8462660Z               "path": "crates/spt-daemon/src/notif.rs",
2026-06-20T11:21:58.8462782Z               "line": 258
2026-06-20T11:21:58.8462887Z             },
2026-06-20T11:21:58.8465569Z             {
2026-06-20T11:21:58.8465745Z               "path": "crates/spt-daemon/src/notif.rs",
2026-06-20T11:21:58.8465865Z               "line": 372
2026-06-20T11:21:58.8465983Z             },
2026-06-20T11:21:58.8466317Z             {
2026-06-20T11:21:58.8466462Z               "path": "crates/spt-daemon/src/notif.rs",
2026-06-20T11:21:58.8466575Z               "line": 479
2026-06-20T11:21:58.8466680Z             },
2026-06-20T11:21:58.8466805Z             {
2026-06-20T11:21:58.8466946Z               "path": "crates/spt-daemon/src/notifsync.rs",
2026-06-20T11:21:58.8467077Z               "line": 24
2026-06-20T11:21:58.8467181Z             },
2026-06-20T11:21:58.8467285Z             {
2026-06-20T11:21:58.8467432Z               "path": "crates/spt-daemon/src/notifsync.rs",
2026-06-20T11:21:58.8467545Z               "line": 34
2026-06-20T11:21:58.8467653Z             },
2026-06-20T11:21:58.8467759Z             {
2026-06-20T11:21:58.8467897Z               "path": "crates/spt-daemon/src/notifsync.rs",
2026-06-20T11:21:58.8468007Z               "line": 60
2026-06-20T11:21:58.8468108Z             },
2026-06-20T11:21:58.8468207Z             {
2026-06-20T11:21:58.8468360Z               "path": "crates/spt-daemon/src/notifsync.rs",
2026-06-20T11:21:58.8468484Z               "line": 82
2026-06-20T11:21:58.8468588Z             },
2026-06-20T11:21:58.8468699Z             {
2026-06-20T11:21:58.8468841Z               "path": "crates/spt-daemon/src/notifsync.rs",
2026-06-20T11:21:58.8469057Z               "line": 94
2026-06-20T11:21:58.8469175Z             },
2026-06-20T11:21:58.8469290Z             {
2026-06-20T11:21:58.8469456Z               "path": "crates/spt-daemon/src/psyrelay.rs",
2026-06-20T11:21:58.8469575Z               "line": 96
2026-06-20T11:21:58.8469691Z             },
2026-06-20T11:21:58.8469799Z             {
2026-06-20T11:21:58.8469949Z               "path": "crates/spt-daemon/src/pump/notif.rs",
2026-06-20T11:21:58.8470067Z               "line": 44
2026-06-20T11:21:58.8470180Z             },
2026-06-20T11:21:58.8470300Z             {
2026-06-20T11:21:58.8470438Z               "path": "crates/spt-net/src/net/notif.rs",
2026-06-20T11:21:58.8470552Z               "line": 20
2026-06-20T11:21:58.8470658Z             },
2026-06-20T11:21:58.8470767Z             {
2026-06-20T11:21:58.8470915Z               "path": "crates/spt-net/src/net/notif.rs",
2026-06-20T11:21:58.8471029Z               "line": 30
2026-06-20T11:21:58.8471143Z             },
2026-06-20T11:21:58.8471244Z             {
2026-06-20T11:21:58.8471391Z               "path": "crates/spt-net/src/net/notif.rs",
2026-06-20T11:21:58.8471515Z               "line": 50
2026-06-20T11:21:58.8471616Z             },
2026-06-20T11:21:58.8471740Z             {
2026-06-20T11:21:58.8471879Z               "path": "crates/spt-store/src/notif.rs",
2026-06-20T11:21:58.8471993Z               "line": 28
2026-06-20T11:21:58.8472106Z             },
2026-06-20T11:21:58.8472227Z             {
2026-06-20T11:21:58.8472354Z               "path": "crates/spt-store/src/notif.rs",
2026-06-20T11:21:58.8472472Z               "line": 126
2026-06-20T11:21:58.8472587Z             },
2026-06-20T11:21:58.8472699Z             {
2026-06-20T11:21:58.8472828Z               "path": "crates/spt-store/src/notif.rs",
2026-06-20T11:21:58.8472958Z               "line": 161
2026-06-20T11:21:58.8473061Z             },
2026-06-20T11:21:58.8473172Z             {
2026-06-20T11:21:58.8473301Z               "path": "crates/spt-store/src/notif.rs",
2026-06-20T11:21:58.8473424Z               "line": 202
2026-06-20T11:21:58.8473634Z             },
2026-06-20T11:21:58.8473738Z             {
2026-06-20T11:21:58.8473868Z               "path": "crates/spt-store/src/notif.rs",
2026-06-20T11:21:58.8473987Z               "line": 213
2026-06-20T11:21:58.8474106Z             },
2026-06-20T11:21:58.8474216Z             {
2026-06-20T11:21:58.8474358Z               "path": "crates/spt-store/src/notif.rs",
2026-06-20T11:21:58.8474464Z               "line": 238
2026-06-20T11:21:58.8474573Z             },
2026-06-20T11:21:58.8474678Z             {
2026-06-20T11:21:58.8474822Z               "path": "crates/spt-store/src/notif.rs",
2026-06-20T11:21:58.8474925Z               "line": 261
2026-06-20T11:21:58.8475036Z             },
2026-06-20T11:21:58.8475268Z             {
2026-06-20T11:21:58.8475411Z               "path": "crates/spt/src/api/reporting.rs",
2026-06-20T11:21:58.8475534Z               "line": 86
2026-06-20T11:21:58.8475642Z             }
2026-06-20T11:21:58.8475757Z           ]
2026-06-20T11:21:58.8475863Z         },
2026-06-20T11:21:58.8475976Z         "int": {
2026-06-20T11:21:58.8476101Z           "complete": true,
2026-06-20T11:21:58.8476219Z           "evidence": [
2026-06-20T11:21:58.8476339Z             {
2026-06-20T11:21:58.8476492Z               "path": "crates/spt-daemon/tests/dispatch.rs",
2026-06-20T11:21:58.8476610Z               "line": 285
2026-06-20T11:21:58.8476721Z             },
2026-06-20T11:21:58.8476845Z             {
2026-06-20T11:21:58.8476997Z               "path": "crates/spt-daemon/tests/pump.rs",
2026-06-20T11:21:58.8477116Z               "line": 145
2026-06-20T11:21:58.8477225Z             },
2026-06-20T11:21:58.8477327Z             {
2026-06-20T11:21:58.8477468Z               "path": "crates/spt-daemon/tests/twohost.rs",
2026-06-20T11:21:58.8477593Z               "line": 684
2026-06-20T11:21:58.8477695Z             },
2026-06-20T11:21:58.8477802Z             {
2026-06-20T11:21:58.8477949Z               "path": "crates/spt-daemon/tests/twohost.rs",
2026-06-20T11:21:58.8478072Z               "line": 1102
2026-06-20T11:21:58.8478181Z             }
2026-06-20T11:21:58.8478305Z           ]
2026-06-20T11:21:58.8478420Z         },
2026-06-20T11:21:58.8478524Z         "unit": {
2026-06-20T11:21:58.8478649Z           "complete": true,
2026-06-20T11:21:58.8478763Z           "evidence": [
2026-06-20T11:21:58.8478872Z             {
2026-06-20T11:21:58.8479106Z               "path": "crates/spt-daemon/src/notif.rs",
2026-06-20T11:21:58.8479221Z               "line": 572
2026-06-20T11:21:58.8479335Z             },
2026-06-20T11:21:58.8479449Z             {
2026-06-20T11:21:58.8479594Z               "path": "crates/spt-daemon/src/notif.rs",
2026-06-20T11:21:58.8479712Z               "line": 636
2026-06-20T11:21:58.8479830Z             },
2026-06-20T11:21:58.8479950Z             {
2026-06-20T11:21:58.8480102Z               "path": "crates/spt-daemon/src/notif.rs",
2026-06-20T11:21:58.8480213Z               "line": 740
2026-06-20T11:21:58.8480307Z             },
2026-06-20T11:21:58.8480427Z             {
2026-06-20T11:21:58.8480557Z               "path": "crates/spt-daemon/src/notif.rs",
2026-06-20T11:21:58.8480678Z               "line": 772
2026-06-20T11:21:58.8480783Z             },
2026-06-20T11:21:58.8480888Z             {
2026-06-20T11:21:58.8481031Z               "path": "crates/spt-daemon/src/notif.rs",
2026-06-20T11:21:58.8481150Z               "line": 840
2026-06-20T11:21:58.8481261Z             },
2026-06-20T11:21:58.8481360Z             {
2026-06-20T11:21:58.8481500Z               "path": "crates/spt-daemon/src/notif.rs",
2026-06-20T11:21:58.8481604Z               "line": 898
2026-06-20T11:21:58.8481717Z             },
2026-06-20T11:21:58.8481833Z             {
2026-06-20T11:21:58.8481961Z               "path": "crates/spt-daemon/src/notif.rs",
2026-06-20T11:21:58.8482090Z               "line": 1173
2026-06-20T11:21:58.8482200Z             },
2026-06-20T11:21:58.8482314Z             {
2026-06-20T11:21:58.8482454Z               "path": "crates/spt-daemon/src/notifsync.rs",
2026-06-20T11:21:58.8482576Z               "line": 157
2026-06-20T11:21:58.8482787Z             },
2026-06-20T11:21:58.8482895Z             {
2026-06-20T11:21:58.8483047Z               "path": "crates/spt-daemon/src/notifsync.rs",
2026-06-20T11:21:58.8483161Z               "line": 250
2026-06-20T11:21:58.8483278Z             },
2026-06-20T11:21:58.8483393Z             {
2026-06-20T11:21:58.8483537Z               "path": "crates/spt-daemon/src/notifsync.rs",
2026-06-20T11:21:58.8483655Z               "line": 273
2026-06-20T11:21:58.8483760Z             },
2026-06-20T11:21:58.8483870Z             {
2026-06-20T11:21:58.8484017Z               "path": "crates/spt-daemon/src/psyrelay.rs",
2026-06-20T11:21:58.8484142Z               "line": 355
2026-06-20T11:21:58.8484367Z             },
2026-06-20T11:21:58.8484471Z             {
2026-06-20T11:21:58.8484598Z               "path": "crates/spt-daemon/src/psyrelay.rs",
2026-06-20T11:21:58.8484719Z               "line": 392
2026-06-20T11:21:58.8484828Z             },
2026-06-20T11:21:58.8484937Z             {
2026-06-20T11:21:58.8485082Z               "path": "crates/spt-daemon/tests/notifsync.rs",
2026-06-20T11:21:58.8485191Z               "line": 131
2026-06-20T11:21:58.8485296Z             },
2026-06-20T11:21:58.8485406Z             {
2026-06-20T11:21:58.8485543Z               "path": "crates/spt-net/src/net/notif.rs",
2026-06-20T11:21:58.8485659Z               "line": 72
2026-06-20T11:21:58.8485768Z             },
2026-06-20T11:21:58.8485885Z             {
2026-06-20T11:21:58.8486029Z               "path": "crates/spt-net/src/net/notif.rs",
2026-06-20T11:21:58.8486145Z               "line": 97
2026-06-20T11:21:58.8486265Z             },
2026-06-20T11:21:58.8486375Z             {
2026-06-20T11:21:58.8486512Z               "path": "crates/spt-store/src/notif.rs",
2026-06-20T11:21:58.8486623Z               "line": 379
2026-06-20T11:21:58.8486733Z             },
2026-06-20T11:21:58.8486846Z             {
2026-06-20T11:21:58.8486981Z               "path": "crates/spt-store/src/notif.rs",
2026-06-20T11:21:58.8487109Z               "line": 417
2026-06-20T11:21:58.8487223Z             },
2026-06-20T11:21:58.8487338Z             {
2026-06-20T11:21:58.8487476Z               "path": "crates/spt-store/src/notif.rs",
2026-06-20T11:21:58.8487591Z               "line": 433
2026-06-20T11:21:58.8487695Z             },
2026-06-20T11:21:58.8487805Z             {
2026-06-20T11:21:58.8487944Z               "path": "crates/spt-store/src/notif.rs",
2026-06-20T11:21:58.8488057Z               "line": 472
2026-06-20T11:21:58.8488173Z             },
2026-06-20T11:21:58.8488283Z             {
2026-06-20T11:21:58.8488424Z               "path": "crates/spt-store/src/notif.rs",
2026-06-20T11:21:58.8488543Z               "line": 489
2026-06-20T11:21:58.8488646Z             },
2026-06-20T11:21:58.8488755Z             {
2026-06-20T11:21:58.8488889Z               "path": "crates/spt-store/src/notif.rs",
2026-06-20T11:21:58.8489079Z               "line": 517
2026-06-20T11:21:58.8489195Z             },
2026-06-20T11:21:58.8489309Z             {
2026-06-20T11:21:58.8489446Z               "path": "crates/spt-store/src/notif.rs",
2026-06-20T11:21:58.8489556Z               "line": 548
2026-06-20T11:21:58.8489670Z             },
2026-06-20T11:21:58.8489781Z             {
2026-06-20T11:21:58.8489928Z               "path": "crates/spt/src/api/reporting.rs",
2026-06-20T11:21:58.8490052Z               "line": 745
2026-06-20T11:21:58.8490163Z             }
2026-06-20T11:21:58.8490267Z           ]
2026-06-20T11:21:58.8490376Z         }
2026-06-20T11:21:58.8490487Z       }
2026-06-20T11:21:58.8490595Z     },
2026-06-20T11:21:58.8490705Z     {
2026-06-20T11:21:58.8490830Z       "id": "REQ-NOTIF-2",
2026-06-20T11:21:58.8491122Z       "title": "spt notify (agent-issued subnet notif) + notif_command manifest seam (harness + shell adapters)",
2026-06-20T11:21:58.8491253Z       "requiredStages": [
2026-06-20T11:21:58.8491357Z         "doc",
2026-06-20T11:21:58.8491482Z         "impl",
2026-06-20T11:21:58.8491596Z         "unit",
2026-06-20T11:21:58.8491701Z         "int"
2026-06-20T11:21:58.8491930Z       ],
2026-06-20T11:21:58.8492040Z       "stages": {
2026-06-20T11:21:58.8492159Z         "doc": {
2026-06-20T11:21:58.8492282Z           "complete": true,
2026-06-20T11:21:58.8492403Z           "evidence": [
2026-06-20T11:21:58.8492521Z             {
2026-06-20T11:21:58.8492645Z               "path": "CONTEXT.md",
2026-06-20T11:21:58.8492755Z               "line": 509
2026-06-20T11:21:58.8492874Z             },
2026-06-20T11:21:58.8492989Z             {
2026-06-20T11:21:58.8493113Z               "path": "docs/MANIFEST.md",
2026-06-20T11:21:58.8493246Z               "line": 123
2026-06-20T11:21:58.8493357Z             }
2026-06-20T11:21:58.8493479Z           ]
2026-06-20T11:21:58.8493683Z         },
2026-06-20T11:21:58.8493815Z         "impl": {
2026-06-20T11:21:58.8493938Z           "complete": true,
2026-06-20T11:21:58.8494054Z           "evidence": [
2026-06-20T11:21:58.8494172Z             {
2026-06-20T11:21:58.8494316Z               "path": "crates/spt-daemon/src/notif.rs",
2026-06-20T11:21:58.8494430Z               "line": 287
2026-06-20T11:21:58.8494529Z             },
2026-06-20T11:21:58.8494631Z             {
2026-06-20T11:21:58.8494778Z               "path": "crates/spt-daemon/src/notif.rs",
2026-06-20T11:21:58.8494883Z               "line": 301
2026-06-20T11:21:58.8494988Z             },
2026-06-20T11:21:58.8495102Z             {
2026-06-20T11:21:58.8495236Z               "path": "crates/spt-daemon/src/notif.rs",
2026-06-20T11:21:58.8495345Z               "line": 326
2026-06-20T11:21:58.8495446Z             },
2026-06-20T11:21:58.8495556Z             {
2026-06-20T11:21:58.8495698Z               "path": "crates/spt-runtime/src/manifest.rs",
2026-06-20T11:21:58.8495807Z               "line": 239
2026-06-20T11:21:58.8495914Z             },
2026-06-20T11:21:58.8496032Z             {
2026-06-20T11:21:58.8496176Z               "path": "crates/spt/src/api/reporting.rs",
2026-06-20T11:21:58.8496295Z               "line": 95
2026-06-20T11:21:58.8496422Z             },
2026-06-20T11:21:58.8496537Z             {
2026-06-20T11:21:58.8496673Z               "path": "crates/spt/src/cli.rs",
2026-06-20T11:21:58.8496777Z               "line": 2225
2026-06-20T11:21:58.8496892Z             },
2026-06-20T11:21:58.8497002Z             {
2026-06-20T11:21:58.8497134Z               "path": "crates/spt/src/cli.rs",
2026-06-20T11:21:58.8497255Z               "line": 2274
2026-06-20T11:21:58.8497363Z             },
2026-06-20T11:21:58.8497469Z             {
2026-06-20T11:21:58.8497602Z               "path": "crates/spt/src/cli.rs",
2026-06-20T11:21:58.8497721Z               "line": 2353
2026-06-20T11:21:58.8497841Z             },
2026-06-20T11:21:58.8497940Z             {
2026-06-20T11:21:58.8498074Z               "path": "crates/spt/src/cli.rs",
2026-06-20T11:21:58.8498185Z               "line": 2392
2026-06-20T11:21:58.8498303Z             }
2026-06-20T11:21:58.8498413Z           ]
2026-06-20T11:21:58.8498528Z         },
2026-06-20T11:21:58.8498632Z         "int": {
2026-06-20T11:21:58.8498753Z           "complete": true,
2026-06-20T11:21:58.8498876Z           "evidence": [
2026-06-20T11:21:58.8499065Z             {
2026-06-20T11:21:58.8499211Z               "path": "crates/spt-daemon/tests/twohost.rs",
2026-06-20T11:21:58.8499325Z               "line": 810
2026-06-20T11:21:58.8499464Z             },
2026-06-20T11:21:58.8499573Z             {
2026-06-20T11:21:58.8499711Z               "path": "crates/spt-daemon/tests/twohost.rs",
2026-06-20T11:21:58.8499826Z               "line": 1345
2026-06-20T11:21:58.8499935Z             }
2026-06-20T11:21:58.8500045Z           ]
2026-06-20T11:21:58.8500159Z         },
2026-06-20T11:21:58.8500268Z         "unit": {
2026-06-20T11:21:58.8500394Z           "complete": true,
2026-06-20T11:21:58.8500517Z           "evidence": [
2026-06-20T11:21:58.8500631Z             {
2026-06-20T11:21:58.8500775Z               "path": "crates/spt-daemon/src/notif.rs",
2026-06-20T11:21:58.8500893Z               "line": 1022
2026-06-20T11:21:58.8500995Z             },
2026-06-20T11:21:58.8501108Z             {
2026-06-20T11:21:58.8501358Z               "path": "crates/spt-daemon/src/notif.rs",
2026-06-20T11:21:58.8501465Z               "line": 1090
2026-06-20T11:21:58.8501571Z             },
2026-06-20T11:21:58.8501677Z             {
2026-06-20T11:21:58.8501808Z               "path": "crates/spt/src/cli.rs",
2026-06-20T11:21:58.8501927Z               "line": 8210
2026-06-20T11:21:58.8502052Z             },
2026-06-20T11:21:58.8502180Z             {
2026-06-20T11:21:58.8502304Z               "path": "crates/spt/src/cli.rs",
2026-06-20T11:21:58.8502410Z               "line": 8265
2026-06-20T11:21:58.8502509Z             }
2026-06-20T11:21:58.8502620Z           ]
2026-06-20T11:21:58.8502823Z         }
2026-06-20T11:21:58.8502944Z       }
2026-06-20T11:21:58.8503057Z     },
2026-06-20T11:21:58.8503172Z     {
2026-06-20T11:21:58.8503301Z       "id": "REQ-PAIR-1",
2026-06-20T11:21:58.8503434Z       "title": "TOTP-seeded SPAKE2 pairing",
2026-06-20T11:21:58.8503554Z       "requiredStages": [
2026-06-20T11:21:58.8503663Z         "impl",
2026-06-20T11:21:58.8503768Z         "unit",
2026-06-20T11:21:58.8503888Z         "int"
2026-06-20T11:21:58.8503996Z       ],
2026-06-20T11:21:58.8504105Z       "stages": {
2026-06-20T11:21:58.8504220Z         "doc": {
2026-06-20T11:21:58.8504337Z           "complete": false,
2026-06-20T11:21:58.8504446Z           "evidence": []
2026-06-20T11:21:58.8504561Z         },
2026-06-20T11:21:58.8504680Z         "impl": {
2026-06-20T11:21:58.8504804Z           "complete": true,
2026-06-20T11:21:58.8504924Z           "evidence": [
2026-06-20T11:21:58.8505028Z             {
2026-06-20T11:21:58.8505191Z               "path": "crates/spt-net/src/net/pairing/spake.rs",
2026-06-20T11:21:58.8505295Z               "line": 27
2026-06-20T11:21:58.8505404Z             },
2026-06-20T11:21:58.8505520Z             {
2026-06-20T11:21:58.8505672Z               "path": "crates/spt-net/src/net/pairing/spake.rs",
2026-06-20T11:21:58.8505796Z               "line": 88
2026-06-20T11:21:58.8505905Z             },
2026-06-20T11:21:58.8506029Z             {
2026-06-20T11:21:58.8506178Z               "path": "crates/spt-net/src/net/pairing/spake.rs",
2026-06-20T11:21:58.8506296Z               "line": 110
2026-06-20T11:21:58.8506402Z             },
2026-06-20T11:21:58.8506517Z             {
2026-06-20T11:21:58.8506673Z               "path": "crates/spt-net/src/net/pairing/spake.rs",
2026-06-20T11:21:58.8506784Z               "line": 153
2026-06-20T11:21:58.8506906Z             },
2026-06-20T11:21:58.8507010Z             {
2026-06-20T11:21:58.8507163Z               "path": "crates/spt-net/src/net/pairing/spake.rs",
2026-06-20T11:21:58.8507289Z               "line": 182
2026-06-20T11:21:58.8507409Z             },
2026-06-20T11:21:58.8507514Z             {
2026-06-20T11:21:58.8507666Z               "path": "crates/spt-net/src/net/pairing/totp.rs",
2026-06-20T11:21:58.8507786Z               "line": 29
2026-06-20T11:21:58.8507900Z             },
2026-06-20T11:21:58.8508010Z             {
2026-06-20T11:21:58.8508177Z               "path": "crates/spt-net/src/net/pairing/transcript.rs",
2026-06-20T11:21:58.8508295Z               "line": 31
2026-06-20T11:21:58.8508411Z             },
2026-06-20T11:21:58.8508515Z             {
2026-06-20T11:21:58.8508663Z               "path": "crates/spt-net/src/net/pairing/wire.rs",
2026-06-20T11:21:58.8508769Z               "line": 44
2026-06-20T11:21:58.8508878Z             },
2026-06-20T11:21:58.8509079Z             {
2026-06-20T11:21:58.8509221Z               "path": "crates/spt-net/src/net/pairing/wire.rs",
2026-06-20T11:21:58.8509351Z               "line": 171
2026-06-20T11:21:58.8509459Z             },
2026-06-20T11:21:58.8509568Z             {
2026-06-20T11:21:58.8509720Z               "path": "crates/spt-net/src/net/pairing/wire.rs",
2026-06-20T11:21:58.8509832Z               "line": 376
2026-06-20T11:21:58.8509952Z             }
2026-06-20T11:21:58.8510062Z           ]
2026-06-20T11:21:58.8510194Z         },
2026-06-20T11:21:58.8510353Z         "int": {
2026-06-20T11:21:58.8510499Z           "complete": true,
2026-06-20T11:21:58.8510828Z           "evidence": [
2026-06-20T11:21:58.8510954Z             {
2026-06-20T11:21:58.8511163Z               "path": "crates/spt-daemon/tests/twohost.rs",
2026-06-20T11:21:58.8511302Z               "line": 645
2026-06-20T11:21:58.8511421Z             },
2026-06-20T11:21:58.8511525Z             {
2026-06-20T11:21:58.8511683Z               "path": "crates/spt-daemon/tests/twohost.rs",
2026-06-20T11:21:58.8511811Z               "line": 887
2026-06-20T11:21:58.8511918Z             }
2026-06-20T11:21:58.8512030Z           ]
2026-06-20T11:21:58.8512131Z         },
2026-06-20T11:21:58.8512237Z         "unit": {
2026-06-20T11:21:58.8512458Z           "complete": true,
2026-06-20T11:21:58.8512583Z           "evidence": [
2026-06-20T11:21:58.8512702Z             {
2026-06-20T11:21:58.8512850Z               "path": "crates/spt-net/src/net/pairing/spake.rs",
2026-06-20T11:21:58.8512970Z               "line": 236
2026-06-20T11:21:58.8513074Z             },
2026-06-20T11:21:58.8513199Z             {
2026-06-20T11:21:58.8513345Z               "path": "crates/spt-net/src/net/pairing/spake.rs",
2026-06-20T11:21:58.8513460Z               "line": 349
2026-06-20T11:21:58.8513579Z             },
2026-06-20T11:21:58.8513684Z             {
2026-06-20T11:21:58.8513838Z               "path": "crates/spt-net/src/net/pairing/totp.rs",
2026-06-20T11:21:58.8513951Z               "line": 194
2026-06-20T11:21:58.8514070Z             },
2026-06-20T11:21:58.8514186Z             {
2026-06-20T11:21:58.8514337Z               "path": "crates/spt-net/src/net/pairing/totp.rs",
2026-06-20T11:21:58.8514458Z               "line": 216
2026-06-20T11:21:58.8514561Z             },
2026-06-20T11:21:58.8514684Z             {
2026-06-20T11:21:58.8514832Z               "path": "crates/spt-net/src/net/pairing/totp.rs",
2026-06-20T11:21:58.8514959Z               "line": 230
2026-06-20T11:21:58.8515059Z             },
2026-06-20T11:21:58.8515169Z             {
2026-06-20T11:21:58.8515321Z               "path": "crates/spt-net/src/net/pairing/totp.rs",
2026-06-20T11:21:58.8515441Z               "line": 242
2026-06-20T11:21:58.8515555Z             },
2026-06-20T11:21:58.8515678Z             {
2026-06-20T11:21:58.8515827Z               "path": "crates/spt-net/src/net/pairing/totp.rs",
2026-06-20T11:21:58.8515931Z               "line": 256
2026-06-20T11:21:58.8516037Z             },
2026-06-20T11:21:58.8516142Z             {
2026-06-20T11:21:58.8516284Z               "path": "crates/spt-net/src/net/pairing/totp.rs",
2026-06-20T11:21:58.8516405Z               "line": 270
2026-06-20T11:21:58.8516518Z             },
2026-06-20T11:21:58.8516637Z             {
2026-06-20T11:21:58.8516785Z               "path": "crates/spt-net/src/net/pairing/totp.rs",
2026-06-20T11:21:58.8516904Z               "line": 277
2026-06-20T11:21:58.8517025Z             },
2026-06-20T11:21:58.8517137Z             {
2026-06-20T11:21:58.8517292Z               "path": "crates/spt-net/src/net/pairing/totp.rs",
2026-06-20T11:21:58.8517406Z               "line": 295
2026-06-20T11:21:58.8517523Z             },
2026-06-20T11:21:58.8517632Z             {
2026-06-20T11:21:58.8517783Z               "path": "crates/spt-net/src/net/pairing/wire.rs",
2026-06-20T11:21:58.8517902Z               "line": 968
2026-06-20T11:21:58.8518012Z             },
2026-06-20T11:21:58.8518117Z             {
2026-06-20T11:21:58.8518250Z               "path": "crates/spt-net/src/net/pairing/wire.rs",
2026-06-20T11:21:58.8518356Z               "line": 1051
2026-06-20T11:21:58.8518455Z             },
2026-06-20T11:21:58.8518575Z             {
2026-06-20T11:21:58.8518727Z               "path": "crates/spt-net/src/net/pairing/wire.rs",
2026-06-20T11:21:58.8518890Z               "line": 1121
2026-06-20T11:21:58.8519080Z             },
2026-06-20T11:21:58.8519185Z             {
2026-06-20T11:21:58.8519343Z               "path": "crates/spt-net/src/net/pairing/wire.rs",
2026-06-20T11:21:58.8519480Z               "line": 1182
2026-06-20T11:21:58.8519587Z             },
2026-06-20T11:21:58.8519700Z             {
2026-06-20T11:21:58.8519939Z               "path": "crates/spt-net/src/net/pairing/wire.rs",
2026-06-20T11:21:58.8520061Z               "line": 1238
2026-06-20T11:21:58.8520180Z             },
2026-06-20T11:21:58.8520299Z             {
2026-06-20T11:21:58.8520440Z               "path": "crates/spt-net/src/net/pairing/wire.rs",
2026-06-20T11:21:58.8520555Z               "line": 1457
2026-06-20T11:21:58.8520665Z             }
2026-06-20T11:21:58.8520769Z           ]
2026-06-20T11:21:58.8520885Z         }
2026-06-20T11:21:58.8520990Z       }
2026-06-20T11:21:58.8521103Z     },
2026-06-20T11:21:58.8521218Z     {
2026-06-20T11:21:58.8521342Z       "id": "REQ-PAIR-2",
2026-06-20T11:21:58.8521604Z       "title": "Local trust store with TOFU + warn-on-change",
2026-06-20T11:21:58.8521718Z       "requiredStages": [],
2026-06-20T11:21:58.8521843Z       "stages": {
2026-06-20T11:21:58.8521952Z         "doc": {
2026-06-20T11:21:58.8522071Z           "complete": false,
2026-06-20T11:21:58.8522187Z           "evidence": []
2026-06-20T11:21:58.8522295Z         },
2026-06-20T11:21:58.8522415Z         "impl": {
2026-06-20T11:21:58.8522530Z           "complete": false,
2026-06-20T11:21:58.8522644Z           "evidence": []
2026-06-20T11:21:58.8522754Z         },
2026-06-20T11:21:58.8522868Z         "int": {
2026-06-20T11:21:58.8522976Z           "complete": false,
2026-06-20T11:21:58.8523086Z           "evidence": []
2026-06-20T11:21:58.8523197Z         },
2026-06-20T11:21:58.8523309Z         "unit": {
2026-06-20T11:21:58.8523434Z           "complete": false,
2026-06-20T11:21:58.8523549Z           "evidence": []
2026-06-20T11:21:58.8523662Z         }
2026-06-20T11:21:58.8523773Z       }
2026-06-20T11:21:58.8523883Z     },
2026-06-20T11:21:58.8523996Z     {
2026-06-20T11:21:58.8524121Z       "id": "REQ-PAIR-3",
2026-06-20T11:21:58.8524297Z       "title": "Fetch current pairing code from any paired node",
2026-06-20T11:21:58.8524413Z       "requiredStages": [
2026-06-20T11:21:58.8524540Z         "impl",
2026-06-20T11:21:58.8524650Z         "unit"
2026-06-20T11:21:58.8524760Z       ],
2026-06-20T11:21:58.8524874Z       "stages": {
2026-06-20T11:21:58.8524989Z         "doc": {
2026-06-20T11:21:58.8525117Z           "complete": false,
2026-06-20T11:21:58.8525230Z           "evidence": []
2026-06-20T11:21:58.8525345Z         },
2026-06-20T11:21:58.8525453Z         "impl": {
2026-06-20T11:21:58.8525566Z           "complete": true,
2026-06-20T11:21:58.8525686Z           "evidence": [
2026-06-20T11:21:58.8525796Z             {
2026-06-20T11:21:58.8525929Z               "path": "crates/spt/src/cli.rs",
2026-06-20T11:21:58.8526044Z               "line": 3259
2026-06-20T11:21:58.8526157Z             },
2026-06-20T11:21:58.8526277Z             {
2026-06-20T11:21:58.8526406Z               "path": "crates/spt/src/cli.rs",
2026-06-20T11:21:58.8526530Z               "line": 3328
2026-06-20T11:21:58.8526641Z             },
2026-06-20T11:21:58.8526754Z             {
2026-06-20T11:21:58.8526878Z               "path": "crates/spt/src/cli.rs",
2026-06-20T11:21:58.8526997Z               "line": 3709
2026-06-20T11:21:58.8527116Z             },
2026-06-20T11:21:58.8527217Z             {
2026-06-20T11:21:58.8527336Z               "path": "crates/spt/src/cli.rs",
2026-06-20T11:21:58.8527450Z               "line": 4961
2026-06-20T11:21:58.8527561Z             }
2026-06-20T11:21:58.8527674Z           ]
2026-06-20T11:21:58.8527794Z         },
2026-06-20T11:21:58.8527914Z         "int": {
2026-06-20T11:21:58.8528031Z           "complete": false,
2026-06-20T11:21:58.8528149Z           "evidence": []
2026-06-20T11:21:58.8528255Z         },
2026-06-20T11:21:58.8528362Z         "unit": {
2026-06-20T11:21:58.8528476Z           "complete": true,
2026-06-20T11:21:58.8528601Z           "evidence": [
2026-06-20T11:21:58.8528720Z             {
2026-06-20T11:21:58.8528844Z               "path": "crates/spt/src/cli.rs",
2026-06-20T11:21:58.8529044Z               "line": 9964
2026-06-20T11:21:58.8529144Z             },
2026-06-20T11:21:58.8529259Z             {
2026-06-20T11:21:58.8529493Z               "path": "crates/spt/src/cli.rs",
2026-06-20T11:21:58.8529616Z               "line": 10179
2026-06-20T11:21:58.8529726Z             },
2026-06-20T11:21:58.8529823Z             {
2026-06-20T11:21:58.8529955Z               "path": "crates/spt/src/cli.rs",
2026-06-20T11:21:58.8530069Z               "line": 10838
2026-06-20T11:21:58.8530184Z             },
2026-06-20T11:21:58.8530298Z             {
2026-06-20T11:21:58.8530423Z               "path": "crates/spt/src/cli.rs",
2026-06-20T11:21:58.8530551Z               "line": 10857
2026-06-20T11:21:58.8530654Z             },
2026-06-20T11:21:58.8530769Z             {
2026-06-20T11:21:58.8530896Z               "path": "crates/spt/src/cli.rs",
2026-06-20T11:21:58.8531115Z               "line": 10881
2026-06-20T11:21:58.8531235Z             },
2026-06-20T11:21:58.8531348Z             {
2026-06-20T11:21:58.8531478Z               "path": "crates/spt/src/cli.rs",
2026-06-20T11:21:58.8531592Z               "line": 10900
2026-06-20T11:21:58.8531701Z             },
2026-06-20T11:21:58.8531812Z             {
2026-06-20T11:21:58.8531944Z               "path": "crates/spt/src/cli.rs",
2026-06-20T11:21:58.8532069Z               "line": 10913
2026-06-20T11:21:58.8532178Z             },
2026-06-20T11:21:58.8532297Z             {
2026-06-20T11:21:58.8532422Z               "path": "crates/spt/src/cli.rs",
2026-06-20T11:21:58.8532551Z               "line": 10922
2026-06-20T11:21:58.8532655Z             }
2026-06-20T11:21:58.8532775Z           ]
2026-06-20T11:21:58.8532889Z         }
2026-06-20T11:21:58.8533000Z       }
2026-06-20T11:21:58.8533113Z     },
2026-06-20T11:21:58.8533227Z     {
2026-06-20T11:21:58.8533352Z       "id": "REQ-PAIR-4",
2026-06-20T11:21:58.8533494Z       "title": "Subnet naming on first pairing",
2026-06-20T11:21:58.8533622Z       "requiredStages": [
2026-06-20T11:21:58.8533747Z         "impl",
2026-06-20T11:21:58.8533860Z         "unit"
2026-06-20T11:21:58.8533980Z       ],
2026-06-20T11:21:58.8534100Z       "stages": {
2026-06-20T11:21:58.8534213Z         "doc": {
2026-06-20T11:21:58.8534333Z           "complete": false,
2026-06-20T11:21:58.8534452Z           "evidence": []
2026-06-20T11:21:58.8534566Z         },
2026-06-20T11:21:58.8534676Z         "impl": {
2026-06-20T11:21:58.8534800Z           "complete": true,
2026-06-20T11:21:58.8534910Z           "evidence": [
2026-06-20T11:21:58.8535034Z             {
2026-06-20T11:21:58.8535181Z               "path": "crates/spt-store/src/subnet.rs",
2026-06-20T11:21:58.8535306Z               "line": 174
2026-06-20T11:21:58.8535409Z             }
2026-06-20T11:21:58.8535525Z           ]
2026-06-20T11:21:58.8535635Z         },
2026-06-20T11:21:58.8535738Z         "int": {
2026-06-20T11:21:58.8535867Z           "complete": false,
2026-06-20T11:21:58.8535981Z           "evidence": []
2026-06-20T11:21:58.8536093Z         },
2026-06-20T11:21:58.8536208Z         "unit": {
2026-06-20T11:21:58.8536328Z           "complete": true,
2026-06-20T11:21:58.8536451Z           "evidence": [
2026-06-20T11:21:58.8536566Z             {
2026-06-20T11:21:58.8536722Z               "path": "crates/spt-net/src/net/pairing/wire.rs",
2026-06-20T11:21:58.8536833Z               "line": 1294
2026-06-20T11:21:58.8536952Z             }
2026-06-20T11:21:58.8537061Z           ]
2026-06-20T11:21:58.8537181Z         }
2026-06-20T11:21:58.8537286Z       }
2026-06-20T11:21:58.8537390Z     },
2026-06-20T11:21:58.8537510Z     {
2026-06-20T11:21:58.8537624Z       "id": "REQ-PAIR-5",
2026-06-20T11:21:58.8537948Z       "title": "Multi-subnet pairing: subnet-name discovery input, create-new-names-up-front, rendezvous-token hashing",
2026-06-20T11:21:58.8538067Z       "requiredStages": [
2026-06-20T11:21:58.8538188Z         "impl",
2026-06-20T11:21:58.8538301Z         "unit",
2026-06-20T11:21:58.8538402Z         "int"
2026-06-20T11:21:58.8538517Z       ],
2026-06-20T11:21:58.8538624Z       "stages": {
2026-06-20T11:21:58.8538729Z         "doc": {
2026-06-20T11:21:58.8538848Z           "complete": false,
2026-06-20T11:21:58.8539061Z           "evidence": []
2026-06-20T11:21:58.8539304Z         },
2026-06-20T11:21:58.8539434Z         "impl": {
2026-06-20T11:21:58.8539552Z           "complete": true,
2026-06-20T11:21:58.8539665Z           "evidence": [
2026-06-20T11:21:58.8539777Z             {
2026-06-20T11:21:58.8539918Z               "path": "crates/spt-net/src/net/pairing/meet.rs",
2026-06-20T11:21:58.8540048Z               "line": 44
2026-06-20T11:21:58.8540172Z             },
2026-06-20T11:21:58.8540272Z             {
2026-06-20T11:21:58.8540420Z               "path": "crates/spt-net/src/net/pairing/meet.rs",
2026-06-20T11:21:58.8540534Z               "line": 96
2026-06-20T11:21:58.8540634Z             },
2026-06-20T11:21:58.8540839Z             {
2026-06-20T11:21:58.8540993Z               "path": "crates/spt-net/src/net/pairing/meet.rs",
2026-06-20T11:21:58.8541111Z               "line": 107
2026-06-20T11:21:58.8541215Z             },
2026-06-20T11:21:58.8541377Z             {
2026-06-20T11:21:58.8541523Z               "path": "crates/spt-net/src/net/pairing/meet.rs",
2026-06-20T11:21:58.8541661Z               "line": 124
2026-06-20T11:21:58.8541771Z             },
2026-06-20T11:21:58.8541875Z             {
2026-06-20T11:21:58.8542033Z               "path": "crates/spt-net/src/net/pairing/meet.rs",
2026-06-20T11:21:58.8542147Z               "line": 155
2026-06-20T11:21:58.8542262Z             },
2026-06-20T11:21:58.8542376Z             {
2026-06-20T11:21:58.8542523Z               "path": "crates/spt-net/src/net/pairing/meet.rs",
2026-06-20T11:21:58.8542634Z               "line": 195
2026-06-20T11:21:58.8542748Z             },
2026-06-20T11:21:58.8542867Z             {
2026-06-20T11:21:58.8542996Z               "path": "crates/spt-net/src/net/pairing/meet.rs",
2026-06-20T11:21:58.8543125Z               "line": 251
2026-06-20T11:21:58.8543235Z             },
2026-06-20T11:21:58.8543339Z             {
2026-06-20T11:21:58.8543516Z               "path": "crates/spt-net/src/net/pairing/rendezvous.rs",
2026-06-20T11:21:58.8543626Z               "line": 33
2026-06-20T11:21:58.8543734Z             },
2026-06-20T11:21:58.8543846Z             {
2026-06-20T11:21:58.8544011Z               "path": "crates/spt-net/src/net/pairing/rendezvous.rs",
2026-06-20T11:21:58.8544124Z               "line": 45
2026-06-20T11:21:58.8544235Z             },
2026-06-20T11:21:58.8544345Z             {
2026-06-20T11:21:58.8544501Z               "path": "crates/spt-net/src/net/pairing/rendezvous.rs",
2026-06-20T11:21:58.8544621Z               "line": 59
2026-06-20T11:21:58.8544726Z             },
2026-06-20T11:21:58.8544846Z             {
2026-06-20T11:21:58.8544989Z               "path": "crates/spt-net/src/net/pairing/wire.rs",
2026-06-20T11:21:58.8545107Z               "line": 376
2026-06-20T11:21:58.8545218Z             }
2026-06-20T11:21:58.8545332Z           ]
2026-06-20T11:21:58.8545441Z         },
2026-06-20T11:21:58.8545551Z         "int": {
2026-06-20T11:21:58.8545670Z           "complete": true,
2026-06-20T11:21:58.8545785Z           "evidence": [
2026-06-20T11:21:58.8545909Z             {
2026-06-20T11:21:58.8546056Z               "path": "crates/spt-daemon/tests/twohost.rs",
2026-06-20T11:21:58.8546167Z               "line": 887
2026-06-20T11:21:58.8546284Z             },
2026-06-20T11:21:58.8546384Z             {
2026-06-20T11:21:58.8549313Z               "path": "crates/spt-net/src/net/pairing/meet.rs",
2026-06-20T11:21:58.8549501Z               "line": 342
2026-06-20T11:21:58.8549621Z             }
2026-06-20T11:21:58.8549721Z           ]
2026-06-20T11:21:58.8549830Z         },
2026-06-20T11:21:58.8549940Z         "unit": {
2026-06-20T11:21:58.8550069Z           "complete": true,
2026-06-20T11:21:58.8550193Z           "evidence": [
2026-06-20T11:21:58.8550318Z             {
2026-06-20T11:21:58.8550488Z               "path": "crates/spt-net/src/net/pairing/meet.rs",
2026-06-20T11:21:58.8550613Z               "line": 293
2026-06-20T11:21:58.8550722Z             },
2026-06-20T11:21:58.8550832Z             {
2026-06-20T11:21:58.8550981Z               "path": "crates/spt-net/src/net/pairing/meet.rs",
2026-06-20T11:21:58.8551272Z               "line": 304
2026-06-20T11:21:58.8551394Z             },
2026-06-20T11:21:58.8551504Z             {
2026-06-20T11:21:58.8551657Z               "path": "crates/spt-net/src/net/pairing/meet.rs",
2026-06-20T11:21:58.8551771Z               "line": 406
2026-06-20T11:21:58.8551889Z             },
2026-06-20T11:21:58.8551993Z             {
2026-06-20T11:21:58.8552163Z               "path": "crates/spt-net/src/net/pairing/rendezvous.rs",
2026-06-20T11:21:58.8552279Z               "line": 72
2026-06-20T11:21:58.8552388Z             },
2026-06-20T11:21:58.8552498Z             {
2026-06-20T11:21:58.8552651Z               "path": "crates/spt-net/src/net/pairing/rendezvous.rs",
2026-06-20T11:21:58.8552875Z               "line": 82
2026-06-20T11:21:58.8552979Z             },
2026-06-20T11:21:58.8553093Z             {
2026-06-20T11:21:58.8553256Z               "path": "crates/spt-net/src/net/pairing/rendezvous.rs",
2026-06-20T11:21:58.8553370Z               "line": 100
2026-06-20T11:21:58.8553490Z             },
2026-06-20T11:21:58.8553599Z             {
2026-06-20T11:21:58.8553766Z               "path": "crates/spt-net/src/net/pairing/rendezvous.rs",
2026-06-20T11:21:58.8553876Z               "line": 110
2026-06-20T11:21:58.8553980Z             },
2026-06-20T11:21:58.8554091Z             {
2026-06-20T11:21:58.8554256Z               "path": "crates/spt-net/src/net/pairing/rendezvous.rs",
2026-06-20T11:21:58.8554367Z               "line": 125
2026-06-20T11:21:58.8554478Z             },
2026-06-20T11:21:58.8554590Z             {
2026-06-20T11:21:58.8554742Z               "path": "crates/spt-net/src/net/pairing/wire.rs",
2026-06-20T11:21:58.8554867Z               "line": 1044
2026-06-20T11:21:58.8554976Z             },
2026-06-20T11:21:58.8555086Z             {
2026-06-20T11:21:58.8555234Z               "path": "crates/spt-net/src/net/pairing/wire.rs",
2026-06-20T11:21:58.8555347Z               "line": 1110
2026-06-20T11:21:58.8555468Z             },
2026-06-20T11:21:58.8555586Z             {
2026-06-20T11:21:58.8555730Z               "path": "crates/spt-net/src/net/pairing/wire.rs",
2026-06-20T11:21:58.8555853Z               "line": 1357
2026-06-20T11:21:58.8555967Z             }
2026-06-20T11:21:58.8556073Z           ]
2026-06-20T11:21:58.8556192Z         }
2026-06-20T11:21:58.8556311Z       }
2026-06-20T11:21:58.8556426Z     },
2026-06-20T11:21:58.8556544Z     {
2026-06-20T11:21:58.8556669Z       "id": "REQ-PAIR-6",
2026-06-20T11:21:58.8556949Z       "title": "Elevation-gated per-subnet code fetch (UAC/root or elevated agent; else authenticator app)",
2026-06-20T11:21:58.8557082Z       "requiredStages": [
2026-06-20T11:21:58.8557194Z         "impl",
2026-06-20T11:21:58.8557304Z         "unit"
2026-06-20T11:21:58.8557414Z       ],
2026-06-20T11:21:58.8557528Z       "stages": {
2026-06-20T11:21:58.8557648Z         "doc": {
2026-06-20T11:21:58.8557762Z           "complete": false,
2026-06-20T11:21:58.8557885Z           "evidence": []
2026-06-20T11:21:58.8557996Z         },
2026-06-20T11:21:58.8558111Z         "impl": {
2026-06-20T11:21:58.8558234Z           "complete": true,
2026-06-20T11:21:58.8558349Z           "evidence": [
2026-06-20T11:21:58.8558458Z             {
2026-06-20T11:21:58.8558592Z               "path": "crates/spt/src/cli.rs",
2026-06-20T11:21:58.8558721Z               "line": 3328
2026-06-20T11:21:58.8558825Z             },
2026-06-20T11:21:58.8558936Z             {
2026-06-20T11:21:58.8559154Z               "path": "crates/spt/src/cli.rs",
2026-06-20T11:21:58.8559270Z               "line": 3709
2026-06-20T11:21:58.8559374Z             },
2026-06-20T11:21:58.8559488Z             {
2026-06-20T11:21:58.8559628Z               "path": "crates/spt/src/elevation.rs",
2026-06-20T11:21:58.8559740Z               "line": 18
2026-06-20T11:21:58.8559854Z             },
2026-06-20T11:21:58.8559964Z             {
2026-06-20T11:21:58.8560090Z               "path": "crates/spt/src/elevation.rs",
2026-06-20T11:21:58.8560210Z               "line": 49
2026-06-20T11:21:58.8560424Z             },
2026-06-20T11:21:58.8560534Z             {
2026-06-20T11:21:58.8560668Z               "path": "crates/spt/src/elevation.rs",
2026-06-20T11:21:58.8560791Z               "line": 318
2026-06-20T11:21:58.8560902Z             }
2026-06-20T11:21:58.8561002Z           ]
2026-06-20T11:21:58.8561111Z         },
2026-06-20T11:21:58.8561221Z         "int": {
2026-06-20T11:21:58.8561344Z           "complete": false,
2026-06-20T11:21:58.8561454Z           "evidence": []
2026-06-20T11:21:58.8561564Z         },
2026-06-20T11:21:58.8561678Z         "unit": {
2026-06-20T11:21:58.8561784Z           "complete": true,
2026-06-20T11:21:58.8561912Z           "evidence": [
2026-06-20T11:21:58.8562127Z             {
2026-06-20T11:21:58.8562255Z               "path": "crates/spt/src/cli.rs",
2026-06-20T11:21:58.8562368Z               "line": 10935
2026-06-20T11:21:58.8562483Z             },
2026-06-20T11:21:58.8562600Z             {
2026-06-20T11:21:58.8562709Z               "path": "crates/spt/src/cli.rs",
2026-06-20T11:21:58.8562834Z               "line": 10952
2026-06-20T11:21:58.8562933Z             },
2026-06-20T11:21:58.8563038Z             {
2026-06-20T11:21:58.8563168Z               "path": "crates/spt/src/elevation.rs",
2026-06-20T11:21:58.8563291Z               "line": 383
2026-06-20T11:21:58.8563401Z             },
2026-06-20T11:21:58.8563506Z             {
2026-06-20T11:21:58.8563649Z               "path": "crates/spt/src/elevation.rs",
2026-06-20T11:21:58.8563760Z               "line": 392
2026-06-20T11:21:58.8563878Z             }
2026-06-20T11:21:58.8563987Z           ]
2026-06-20T11:21:58.8564098Z         }
2026-06-20T11:21:58.8564207Z       }
2026-06-20T11:21:58.8564306Z     },
2026-06-20T11:21:58.8564427Z     {
2026-06-20T11:21:58.8564536Z       "id": "REQ-PAIR-7",
2026-06-20T11:21:58.8564723Z       "title": "Subnet icon (inline image metadata, GUI-only consumer)",
2026-06-20T11:21:58.8564845Z       "requiredStages": [],
2026-06-20T11:21:58.8564966Z       "stages": {
2026-06-20T11:21:58.8565061Z         "doc": {
2026-06-20T11:21:58.8565179Z           "complete": false,
2026-06-20T11:21:58.8565302Z           "evidence": []
2026-06-20T11:21:58.8565408Z         },
2026-06-20T11:21:58.8565531Z         "impl": {
2026-06-20T11:21:58.8565646Z           "complete": false,
2026-06-20T11:21:58.8565756Z           "evidence": []
2026-06-20T11:21:58.8565865Z         },
2026-06-20T11:21:58.8565976Z         "int": {
2026-06-20T11:21:58.8566099Z           "complete": false,
2026-06-20T11:21:58.8566217Z           "evidence": []
2026-06-20T11:21:58.8566338Z         },
2026-06-20T11:21:58.8566447Z         "unit": {
2026-06-20T11:21:58.8566571Z           "complete": false,
2026-06-20T11:21:58.8566700Z           "evidence": []
2026-06-20T11:21:58.8566814Z         }
2026-06-20T11:21:58.8566930Z       }
2026-06-20T11:21:58.8567038Z     },
2026-06-20T11:21:58.8567153Z     {
2026-06-20T11:21:58.8567273Z       "id": "REQ-PAIR-8",
2026-06-20T11:21:58.8568680Z       "title": "NTP TOTP offset: the pairing ceremony queries NTP at ceremony time (both sides) and applies the derived offset to the TOTP calculation in-process only; system-clock fallback when NTP is unreachable (offline LAN pairing unaffected — NTP failure never blocks a pairing that succeeds today); never sets the OS clock; no background sync loop (M8 decision 18; field trigger: enlyzeam clock >1 min off exceeds the ±1 window)",
2026-06-20T11:21:58.8568818Z       "requiredStages": [
2026-06-20T11:21:58.8568928Z         "impl",
2026-06-20T11:21:58.8569128Z         "unit"
2026-06-20T11:21:58.8569234Z       ],
2026-06-20T11:21:58.8569352Z       "stages": {
2026-06-20T11:21:58.8569472Z         "doc": {
2026-06-20T11:21:58.8569591Z           "complete": false,
2026-06-20T11:21:58.8569723Z           "evidence": []
2026-06-20T11:21:58.8569840Z         },
2026-06-20T11:21:58.8569966Z         "impl": {
2026-06-20T11:21:58.8570082Z           "complete": true,
2026-06-20T11:21:58.8570202Z           "evidence": [
2026-06-20T11:21:58.8570314Z             {
2026-06-20T11:21:58.8570575Z               "path": "crates/spt-daemon/src/pairhost.rs",
2026-06-20T11:21:58.8570703Z               "line": 577
2026-06-20T11:21:58.8570813Z             },
2026-06-20T11:21:58.8570932Z             {
2026-06-20T11:21:58.8571085Z               "path": "crates/spt-net/src/net/pairing/ntp.rs",
2026-06-20T11:21:58.8571209Z               "line": 22
2026-06-20T11:21:58.8571327Z             },
2026-06-20T11:21:58.8571438Z             {
2026-06-20T11:21:58.8571590Z               "path": "crates/spt-net/src/net/pairing/ntp.rs",
2026-06-20T11:21:58.8571704Z               "line": 76
2026-06-20T11:21:58.8571819Z             },
2026-06-20T11:21:58.8571928Z             {
2026-06-20T11:21:58.8572171Z               "path": "crates/spt-net/src/net/pairing/ntp.rs",
2026-06-20T11:21:58.8572291Z               "line": 127
2026-06-20T11:21:58.8572411Z             }
2026-06-20T11:21:58.8572509Z           ]
2026-06-20T11:21:58.8572610Z         },
2026-06-20T11:21:58.8572721Z         "int": {
2026-06-20T11:21:58.8572838Z           "complete": false,
2026-06-20T11:21:58.8572947Z           "evidence": []
2026-06-20T11:21:58.8573057Z         },
2026-06-20T11:21:58.8573165Z         "unit": {
2026-06-20T11:21:58.8573288Z           "complete": true,
2026-06-20T11:21:58.8573404Z           "evidence": [
2026-06-20T11:21:58.8573513Z             {
2026-06-20T11:21:58.8573661Z               "path": "crates/spt-net/src/net/pairing/ntp.rs",
2026-06-20T11:21:58.8573785Z               "line": 183
2026-06-20T11:21:58.8573894Z             },
2026-06-20T11:21:58.8574000Z             {
2026-06-20T11:21:58.8574147Z               "path": "crates/spt-net/src/net/pairing/ntp.rs",
2026-06-20T11:21:58.8574257Z               "line": 195
2026-06-20T11:21:58.8574371Z             },
2026-06-20T11:21:58.8574476Z             {
2026-06-20T11:21:58.8574620Z               "path": "crates/spt-net/src/net/pairing/ntp.rs",
2026-06-20T11:21:58.8574743Z               "line": 211
2026-06-20T11:21:58.8574848Z             },
2026-06-20T11:21:58.8574973Z             {
2026-06-20T11:21:58.8575115Z               "path": "crates/spt-net/src/net/pairing/ntp.rs",
2026-06-20T11:21:58.8575235Z               "line": 227
2026-06-20T11:21:58.8575349Z             }
2026-06-20T11:21:58.8575463Z           ]
2026-06-20T11:21:58.8575579Z         }
2026-06-20T11:21:58.8575687Z       }
2026-06-20T11:21:58.8575796Z     },
2026-06-20T11:21:58.8575906Z     {
2026-06-20T11:21:58.8576034Z       "id": "REQ-PICKER-1",
2026-06-20T11:21:58.8579756Z       "title": "The picker renders a FOUR-state endpoint status (extending the W2 online/offline duality): the list-item square AND a color-coded STATUS line at the top of the pick-existing right-side details both show — gray OFFLINE; green ONLINE (online + PTY-controllable spt-hosted, not controlled); amber 'ONLINE - HARNESS ONLY' (online but NOT broker-PTY-controllable = harness-hosted, no broker PTY seat — today mis-shows green); blue 'ONLINE + CONTROLLED' (online + driven_by.is_some()). Derived on EndpointRow from {offline | controllable | driven_by} with precedence offline→gray, else driven_by→blue, else !controllable→amber, else green (driven_by outranks harness-only; mutually exclusive in practice — a harness-only endpoint has no broker PTY to control). The controllable discriminator is a NEW InfoJson.controllable: Option<bool> (serde-default, N-1-safe), stamped at the establish seam — cmd_listen (harness-hosted relay, no broker PTY) → Some(false); cmd_bind live_agent (spt-hosted broker PTY) → Some(true); absent → not-controllable (amber) default (harness-hosted is the common mis-reported case; one bind self-corrects). Store-projection-only (no live daemon query — doyle ruling). (v0.10.0)",
2026-06-20T11:21:58.8579912Z       "requiredStages": [
2026-06-20T11:21:58.8580037Z         "impl",
2026-06-20T11:21:58.8580155Z         "unit"
2026-06-20T11:21:58.8580256Z       ],
2026-06-20T11:21:58.8580381Z       "stages": {
2026-06-20T11:21:58.8580484Z         "doc": {
2026-06-20T11:21:58.8580603Z           "complete": false,
2026-06-20T11:21:58.8580724Z           "evidence": []
2026-06-20T11:21:58.8580946Z         },
2026-06-20T11:21:58.8581065Z         "impl": {
2026-06-20T11:21:58.8581182Z           "complete": true,
2026-06-20T11:21:58.8581311Z           "evidence": [
2026-06-20T11:21:58.8581426Z             {
2026-06-20T11:21:58.8581572Z               "path": "crates/spt/src/api/startup.rs",
2026-06-20T11:21:58.8581693Z               "line": 248
2026-06-20T11:21:58.8581807Z             },
2026-06-20T11:21:58.8581921Z             {
2026-06-20T11:21:58.8582060Z               "path": "crates/spt/src/picker/model.rs",
2026-06-20T11:21:58.8582174Z               "line": 263
2026-06-20T11:21:58.8582284Z             }
2026-06-20T11:21:58.8582498Z           ]
2026-06-20T11:21:58.8582618Z         },
2026-06-20T11:21:58.8582732Z         "int": {
2026-06-20T11:21:58.8582856Z           "complete": false,
2026-06-20T11:21:58.8582971Z           "evidence": []
2026-06-20T11:21:58.8583084Z         },
2026-06-20T11:21:58.8583195Z         "unit": {
2026-06-20T11:21:58.8583314Z           "complete": true,
2026-06-20T11:21:58.8583441Z           "evidence": [
2026-06-20T11:21:58.8583541Z             {
2026-06-20T11:21:58.8583683Z               "path": "crates/spt-store/src/info.rs",
2026-06-20T11:21:58.8583791Z               "line": 476
2026-06-20T11:21:58.8583897Z             },
2026-06-20T11:21:58.8584003Z             {
2026-06-20T11:21:58.8584149Z               "path": "crates/spt/src/api/startup.rs",
2026-06-20T11:21:58.8584260Z               "line": 753
2026-06-20T11:21:58.8584364Z             },
2026-06-20T11:21:58.8584482Z             {
2026-06-20T11:21:58.8584612Z               "path": "crates/spt/src/picker/model.rs",
2026-06-20T11:21:58.8584730Z               "line": 886
2026-06-20T11:21:58.8584856Z             },
2026-06-20T11:21:58.8584969Z             {
2026-06-20T11:21:58.8585112Z               "path": "crates/spt/src/picker/view.rs",
2026-06-20T11:21:58.8585237Z               "line": 455
2026-06-20T11:21:58.8585342Z             }
2026-06-20T11:21:58.8585451Z           ]
2026-06-20T11:21:58.8585571Z         }
2026-06-20T11:21:58.8585675Z       }
2026-06-20T11:21:58.8585776Z     },
2026-06-20T11:21:58.8585886Z     {
2026-06-20T11:21:58.8586009Z       "id": "REQ-PICKER-2",
2026-06-20T11:21:58.8587963Z       "title": "The picker's project-history loader reads the git-backed context store, not the bare working tree: data.rs project_history_for enumerates an endpoint's projects via the BranchStore branch set (the context store keeps per-project context in git branches — contextstore::project_branch(project_id), checked out to projects/<project>/<id>/ only on-demand) instead of raw std::fs::read_dir over the empty working tree (which returned empty for ALL rows incl wall-a — the operator bug). Ordered newest→oldest by branch commit recency; degrades to empty (informational pane), never fails. (v0.10.0)",
2026-06-20T11:21:58.8588098Z       "requiredStages": [
2026-06-20T11:21:58.8588210Z         "impl",
2026-06-20T11:21:58.8588325Z         "unit"
2026-06-20T11:21:58.8588426Z       ],
2026-06-20T11:21:58.8588553Z       "stages": {
2026-06-20T11:21:58.8589151Z         "doc": {
2026-06-20T11:21:58.8589275Z           "complete": false,
2026-06-20T11:21:58.8589429Z           "evidence": []
2026-06-20T11:21:58.8589538Z         },
2026-06-20T11:21:58.8589653Z         "impl": {
2026-06-20T11:21:58.8589777Z           "complete": true,
2026-06-20T11:21:58.8589895Z           "evidence": [
2026-06-20T11:21:58.8590015Z             {
2026-06-20T11:21:58.8590158Z               "path": "crates/spt-store/src/branchstore.rs",
2026-06-20T11:21:58.8590272Z               "line": 183
2026-06-20T11:21:58.8590391Z             },
2026-06-20T11:21:58.8590511Z             {
2026-06-20T11:21:58.8590654Z               "path": "crates/spt/src/picker/data.rs",
2026-06-20T11:21:58.8590772Z               "line": 296
2026-06-20T11:21:58.8590883Z             }
2026-06-20T11:21:58.8590993Z           ]
2026-06-20T11:21:58.8591101Z         },
2026-06-20T11:21:58.8591212Z         "int": {
2026-06-20T11:21:58.8591331Z           "complete": false,
2026-06-20T11:21:58.8591578Z           "evidence": []
2026-06-20T11:21:58.8591681Z         },
2026-06-20T11:21:58.8591799Z         "unit": {
2026-06-20T11:21:58.8591905Z           "complete": true,
2026-06-20T11:21:58.8592024Z           "evidence": [
2026-06-20T11:21:58.8592132Z             {
2026-06-20T11:21:58.8592287Z               "path": "crates/spt-store/src/branchstore.rs",
2026-06-20T11:21:58.8592400Z               "line": 655
2026-06-20T11:21:58.8592510Z             }
2026-06-20T11:21:58.8592625Z           ]
2026-06-20T11:21:58.8592724Z         }
2026-06-20T11:21:58.8592834Z       }
2026-06-20T11:21:58.8592944Z     },
2026-06-20T11:21:58.8593063Z     {
2026-06-20T11:21:58.8593292Z       "id": "REQ-PICKER-3",
2026-06-20T11:21:58.8595844Z       "title": "A self-owned subnet row reconciles its status to the LIVE roster: a Subnet-category row whose endpoint_id overlaps a local (is_local) roster id is self-owned (this node hosts it), so its status square is OVERRIDDEN with the live roster status — the WAN registry snapshot (wansend::load_snapshots) is a periodically-advertised, independently-stale projection, while the local roster (p.alive) is ground truth for an endpoint this node hosts. One status square per endpoint (CONTEXT.md:348-350 — nothing licenses opposite squares for one endpoint across its Local vs Subnet listings). A reconcile pass in data.rs after the local_rows + subnet_rows gather; BOTH category listings are preserved (Local + Subnet are legitimately distinct views — you are in your own subnet), only the STATUS is unified. (v0.10.0)",
2026-06-20T11:21:58.8595987Z       "requiredStages": [
2026-06-20T11:21:58.8596108Z         "impl",
2026-06-20T11:21:58.8596226Z         "unit"
2026-06-20T11:21:58.8596341Z       ],
2026-06-20T11:21:58.8596455Z       "stages": {
2026-06-20T11:21:58.8596574Z         "doc": {
2026-06-20T11:21:58.8596694Z           "complete": false,
2026-06-20T11:21:58.8596812Z           "evidence": []
2026-06-20T11:21:58.8596935Z         },
2026-06-20T11:21:58.8597055Z         "impl": {
2026-06-20T11:21:58.8597178Z           "complete": true,
2026-06-20T11:21:58.8597287Z           "evidence": [
2026-06-20T11:21:58.8597408Z             {
2026-06-20T11:21:58.8597555Z               "path": "crates/spt/src/picker/data.rs",
2026-06-20T11:21:58.8597670Z               "line": 124
2026-06-20T11:21:58.8597790Z             }
2026-06-20T11:21:58.8597898Z           ]
2026-06-20T11:21:58.8598009Z         },
2026-06-20T11:21:58.8598123Z         "int": {
2026-06-20T11:21:58.8598246Z           "complete": false,
2026-06-20T11:21:58.8598371Z           "evidence": []
2026-06-20T11:21:58.8598484Z         },
2026-06-20T11:21:58.8598605Z         "unit": {
2026-06-20T11:21:58.8598732Z           "complete": true,
2026-06-20T11:21:58.8598852Z           "evidence": [
2026-06-20T11:21:58.8599042Z             {
2026-06-20T11:21:58.8599189Z               "path": "crates/spt/src/picker/data.rs",
2026-06-20T11:21:58.8599309Z               "line": 369
2026-06-20T11:21:58.8599421Z             }
2026-06-20T11:21:58.8599554Z           ]
2026-06-20T11:21:58.8599660Z         }
2026-06-20T11:21:58.8599773Z       }
2026-06-20T11:21:58.8599879Z     },
2026-06-20T11:21:58.8599984Z     {
2026-06-20T11:21:58.8600112Z       "id": "REQ-PICKER-4",
2026-06-20T11:21:58.8602070Z       "title": "The picker's Subnet category renders the canonical node LABEL, not bare key-hex: a subnet row's node renders as 'LABEL (keyprefix…)' (e.g. 'HFENDULEAM (bcead52b…)') per CONTEXT.md:650 + Instance.node_label, NOT the raw node key-hex (SPT_DEV:14efb80cb… — a picker-only regression because resource_projection→ResourceRow drops node_label, so data.rs subnet_rows uses the raw row.node). Thread node_label into the picker subnet path (ResourceRow gains node_label, or subnet_rows looks it up via the registry's node_labels) and REUSE the one canonical render (format!(\"{l} ({}…)\", key_prefix) — cli.rs / wansend.rs), never a re-implementation. (v0.10.0)",
2026-06-20T11:21:58.8602213Z       "requiredStages": [
2026-06-20T11:21:58.8602331Z         "impl",
2026-06-20T11:21:58.8602560Z         "unit"
2026-06-20T11:21:58.8602669Z       ],
2026-06-20T11:21:58.8602780Z       "stages": {
2026-06-20T11:21:58.8602894Z         "doc": {
2026-06-20T11:21:58.8603017Z           "complete": false,
2026-06-20T11:21:58.8603137Z           "evidence": []
2026-06-20T11:21:58.8603242Z         },
2026-06-20T11:21:58.8603361Z         "impl": {
2026-06-20T11:21:58.8603481Z           "complete": true,
2026-06-20T11:21:58.8603590Z           "evidence": [
2026-06-20T11:21:58.8603709Z             {
2026-06-20T11:21:58.8603857Z               "path": "crates/spt-net/src/net/registry.rs",
2026-06-20T11:21:58.8603985Z               "line": 353
2026-06-20T11:21:58.8604200Z             },
2026-06-20T11:21:58.8604305Z             {
2026-06-20T11:21:58.8604454Z               "path": "crates/spt/src/picker/data.rs",
2026-06-20T11:21:58.8604571Z               "line": 105
2026-06-20T11:21:58.8604685Z             }
2026-06-20T11:21:58.8604803Z           ]
2026-06-20T11:21:58.8604911Z         },
2026-06-20T11:21:58.8605022Z         "int": {
2026-06-20T11:21:58.8605137Z           "complete": false,
2026-06-20T11:21:58.8605259Z           "evidence": []
2026-06-20T11:21:58.8605370Z         },
2026-06-20T11:21:58.8605489Z         "unit": {
2026-06-20T11:21:58.8605608Z           "complete": true,
2026-06-20T11:21:58.8605728Z           "evidence": [
2026-06-20T11:21:58.8605837Z             {
2026-06-20T11:21:58.8605986Z               "path": "crates/spt-net/src/net/registry.rs",
2026-06-20T11:21:58.8606108Z               "line": 1246
2026-06-20T11:21:58.8606213Z             },
2026-06-20T11:21:58.8606329Z             {
2026-06-20T11:21:58.8606467Z               "path": "crates/spt/src/picker/data.rs",
2026-06-20T11:21:58.8606596Z               "line": 427
2026-06-20T11:21:58.8606714Z             }
2026-06-20T11:21:58.8606824Z           ]
2026-06-20T11:21:58.8606940Z         }
2026-06-20T11:21:58.8607048Z       }
2026-06-20T11:21:58.8607157Z     },
2026-06-20T11:21:58.8607259Z     {
2026-06-20T11:21:58.8607396Z       "id": "REQ-PICKER-5",
2026-06-20T11:21:58.8610578Z       "title": "`spt endpoint list` (bare/subnet view) renders an ALIGNED table with canonical node labels: cmd_endpoint_list prints subnet rows with `\\t` TAB separators (cli.rs:~1651-1662) so variable-width endpoint_ids snap fields to different tab-stops → a RAGGED status column (operator screenshot: X/help statuses misaligned vs rt-*/sptc-*/wall-a); and it calls the node renderer with no label → bare key-hex for every row (SAME ResourceRow-drops-node_label root as REQ-PICKER-4). FIX: max-width per-column padding (mirror render_node_rows' pad, pad by char count not byte len — '…' is multibyte) replacing the tabs, and render the node via the shared node_label_display now that ResourceRow carries node_label (REQ-PICKER-4). Extract a pure row-formatter seam so the alignment+label is unit-testable. ALSO: the bare list is the SUBNET view (a just-run LOCAL perch is invisible cross-subnet until the next advertise tick), so emit a `--local` hint line so a freshly-run endpoint isn't perceived as lost. (v0.10.0; operator-flagged + doyle dispatch 2026-06-17)",
2026-06-20T11:21:58.8610710Z       "requiredStages": [
2026-06-20T11:21:58.8610821Z         "impl",
2026-06-20T11:21:58.8610939Z         "unit"
2026-06-20T11:21:58.8611034Z       ],
2026-06-20T11:21:58.8611155Z       "stages": {
2026-06-20T11:21:58.8611273Z         "doc": {
2026-06-20T11:21:58.8611388Z           "complete": false,
2026-06-20T11:21:58.8611511Z           "evidence": []
2026-06-20T11:21:58.8611621Z         },
2026-06-20T11:21:58.8611742Z         "impl": {
2026-06-20T11:21:58.8611864Z           "complete": true,
2026-06-20T11:21:58.8611988Z           "evidence": [
2026-06-20T11:21:58.8612109Z             {
2026-06-20T11:21:58.8612231Z               "path": "crates/spt/src/cli.rs",
2026-06-20T11:21:58.8612357Z               "line": 1802
2026-06-20T11:21:58.8612465Z             }
2026-06-20T11:21:58.8612579Z           ]
2026-06-20T11:21:58.8612683Z         },
2026-06-20T11:21:58.8612896Z         "int": {
2026-06-20T11:21:58.8613025Z           "complete": false,
2026-06-20T11:21:58.8613144Z           "evidence": []
2026-06-20T11:21:58.8613262Z         },
2026-06-20T11:21:58.8613369Z         "unit": {
2026-06-20T11:21:58.8613501Z           "complete": true,
2026-06-20T11:21:58.8613616Z           "evidence": [
2026-06-20T11:21:58.8613721Z             {
2026-06-20T11:21:58.8613854Z               "path": "crates/spt/src/cli.rs",
2026-06-20T11:21:58.8613969Z               "line": 7526
2026-06-20T11:21:58.8614083Z             }
2026-06-20T11:21:58.8614193Z           ]
2026-06-20T11:21:58.8614309Z         }
2026-06-20T11:21:58.8614417Z       }
2026-06-20T11:21:58.8614623Z     },
2026-06-20T11:21:58.8614727Z     {
2026-06-20T11:21:58.8614875Z       "id": "REQ-PICKER-ADAPTER-DESCRIPTION",
2026-06-20T11:21:58.8616273Z       "title": "The Create-new adapter-CHOICE screen of `spt endpoint run`'s picker shows a right-hand Description panel (like the Pick-existing endpoint picker's two-pane) surfacing per-adapter detail: install date, last-updated, adapter TYPE / the endpoint types it hosts, and the adapter description — so the user can see WHAT each adapter is before choosing it (today the selector lists bare names). DEFERRED fast-follow to v0.12.0 (operator 2026-06-18). (post-v0.12.0)",
2026-06-20T11:21:58.8616406Z       "requiredStages": [],
2026-06-20T11:21:58.8616527Z       "stages": {
2026-06-20T11:21:58.8616640Z         "doc": {
2026-06-20T11:21:58.8616750Z           "complete": false,
2026-06-20T11:21:58.8616870Z           "evidence": []
2026-06-20T11:21:58.8616984Z         },
2026-06-20T11:21:58.8617107Z         "impl": {
2026-06-20T11:21:58.8617218Z           "complete": false,
2026-06-20T11:21:58.8617346Z           "evidence": []
2026-06-20T11:21:58.8617456Z         },
2026-06-20T11:21:58.8617561Z         "int": {
2026-06-20T11:21:58.8617685Z           "complete": false,
2026-06-20T11:21:58.8617795Z           "evidence": []
2026-06-20T11:21:58.8617904Z         },
2026-06-20T11:21:58.8618012Z         "unit": {
2026-06-20T11:21:58.8618142Z           "complete": false,
2026-06-20T11:21:58.8618261Z           "evidence": []
2026-06-20T11:21:58.8618370Z         }
2026-06-20T11:21:58.8618480Z       }
2026-06-20T11:21:58.8618590Z     },
2026-06-20T11:21:58.8618694Z     {
2026-06-20T11:21:58.8618834Z       "id": "REQ-PICKER-HISTORY-FRESH",
2026-06-20T11:21:58.8620040Z       "title": "The `spt endpoint run` picker shows project history for FRESH endpoints (operator-raised v0.12.0 real-harness finding). Symptom: a fresh endpoint shows no project history in the picker. ROOT TBD — investigate the project-history loader (v0.10.0 PICKER-2, picker/data.rs) before fixing: distinguish a real loader bug from 'fresh = no history yet' semantics. (v0.12.1)",
2026-06-20T11:21:58.8620172Z       "requiredStages": [
2026-06-20T11:21:58.8620277Z         "impl",
2026-06-20T11:21:58.8620391Z         "unit"
2026-06-20T11:21:58.8620499Z       ],
2026-06-20T11:21:58.8620622Z       "stages": {
2026-06-20T11:21:58.8620727Z         "doc": {
2026-06-20T11:21:58.8620856Z           "complete": false,
2026-06-20T11:21:58.8620975Z           "evidence": []
2026-06-20T11:21:58.8621080Z         },
2026-06-20T11:21:58.8621203Z         "impl": {
2026-06-20T11:21:58.8621314Z           "complete": true,
2026-06-20T11:21:58.8621438Z           "evidence": [
2026-06-20T11:21:58.8621551Z             {
2026-06-20T11:21:58.8621691Z               "path": "crates/spt/src/picker/data.rs",
2026-06-20T11:21:58.8621796Z               "line": 275
2026-06-20T11:21:58.8621890Z             }
2026-06-20T11:21:58.8622001Z           ]
2026-06-20T11:21:58.8622100Z         },
2026-06-20T11:21:58.8622219Z         "int": {
2026-06-20T11:21:58.8622335Z           "complete": false,
2026-06-20T11:21:58.8622453Z           "evidence": []
2026-06-20T11:21:58.8622563Z         },
2026-06-20T11:21:58.8622664Z         "unit": {
2026-06-20T11:21:58.8622777Z           "complete": true,
2026-06-20T11:21:58.8622883Z           "evidence": [
2026-06-20T11:21:58.8622998Z             {
2026-06-20T11:21:58.8623267Z               "path": "crates/spt/src/picker/data.rs",
2026-06-20T11:21:58.8623385Z               "line": 400
2026-06-20T11:21:58.8623498Z             }
2026-06-20T11:21:58.8623599Z           ]
2026-06-20T11:21:58.8623714Z         }
2026-06-20T11:21:58.8623818Z       }
2026-06-20T11:21:58.8623924Z     },
2026-06-20T11:21:58.8624029Z     {
2026-06-20T11:21:58.8624156Z       "id": "REQ-PICKER-ONLINE-ACTION",
2026-06-20T11:21:58.8625743Z       "title": "The `spt endpoint run` picker shows the correct action for an ALREADY-ONLINE endpoint — Attach, NOT 'Start now' (operator-raised v0.12.0 real-harness finding). Symptom: the picker offers 'Start now' for endpoints that are already online. ROOT TBD — investigate the status→action mapping (v0.10.0 PICKER-1 four-state status, picker/model.rs): is it reading live/online state correctly, or rendering stale/wedged broker state (i.e. partly a symptom of the broker wedge / status=online latch)? Fix so online → Attach. (v0.12.1)",
2026-06-20T11:21:58.8625989Z       "requiredStages": [
2026-06-20T11:21:58.8626108Z         "impl",
2026-06-20T11:21:58.8626229Z         "unit"
2026-06-20T11:21:58.8626337Z       ],
2026-06-20T11:21:58.8626457Z       "stages": {
2026-06-20T11:21:58.8626576Z         "doc": {
2026-06-20T11:21:58.8626690Z           "complete": false,
2026-06-20T11:21:58.8626805Z           "evidence": []
2026-06-20T11:21:58.8626900Z         },
2026-06-20T11:21:58.8627018Z         "impl": {
2026-06-20T11:21:58.8627134Z           "complete": true,
2026-06-20T11:21:58.8627258Z           "evidence": [
2026-06-20T11:21:58.8627367Z             {
2026-06-20T11:21:58.8627511Z               "path": "crates/spt/src/picker/model.rs",
2026-06-20T11:21:58.8627639Z               "line": 654
2026-06-20T11:21:58.8627750Z             }
2026-06-20T11:21:58.8627868Z           ]
2026-06-20T11:21:58.8627982Z         },
2026-06-20T11:21:58.8628088Z         "int": {
2026-06-20T11:21:58.8628201Z           "complete": false,
2026-06-20T11:21:58.8628322Z           "evidence": []
2026-06-20T11:21:58.8628436Z         },
2026-06-20T11:21:58.8628549Z         "unit": {
2026-06-20T11:21:58.8628672Z           "complete": true,
2026-06-20T11:21:58.8628779Z           "evidence": [
2026-06-20T11:21:58.8628897Z             {
2026-06-20T11:21:58.8629103Z               "path": "crates/spt/src/picker/model.rs",
2026-06-20T11:21:58.8629212Z               "line": 1078
2026-06-20T11:21:58.8629332Z             },
2026-06-20T11:21:58.8629460Z             {
2026-06-20T11:21:58.8629598Z               "path": "crates/spt/src/picker/model.rs",
2026-06-20T11:21:58.8629713Z               "line": 1092
2026-06-20T11:21:58.8629827Z             }
2026-06-20T11:21:58.8629936Z           ]
2026-06-20T11:21:58.8630047Z         }
2026-06-20T11:21:58.8630156Z       }
2026-06-20T11:21:58.8630271Z     },
2026-06-20T11:21:58.8630371Z     {
2026-06-20T11:21:58.8630504Z       "id": "REQ-PICKER-UX-V013",
2026-06-20T11:21:58.8632131Z       "title": "`spt endpoint run` picker UX (v0.13.0 operator dogfooding): (1) SKIP the first screen — open directly on 'Pick existing'; `n` jumps to 'Create new'. (2) AUTO-ATTACH after both Start-new AND Resume-from-history (both currently don't attach and show no stdout); add an `h` shortcut to run headless (no attach). (3) 'controlled by' shows the node NAME (node_label_display), not the raw hex. (4) Clean up Start-new output — drop the Rust `pid=Some(142748)` leak and the 'harness binds its perch on startup' internals; user-friendly, not a process log. (v0.13.0)",
2026-06-20T11:21:58.8632261Z       "requiredStages": [],
2026-06-20T11:21:58.8632370Z       "stages": {
2026-06-20T11:21:58.8632493Z         "doc": {
2026-06-20T11:21:58.8632618Z           "complete": false,
2026-06-20T11:21:58.8632741Z           "evidence": []
2026-06-20T11:21:58.8632848Z         },
2026-06-20T11:21:58.8632961Z         "impl": {
2026-06-20T11:21:58.8633084Z           "complete": false,
2026-06-20T11:21:58.8633201Z           "evidence": []
2026-06-20T11:21:58.8633322Z         },
2026-06-20T11:21:58.8633433Z         "int": {
2026-06-20T11:21:58.8633661Z           "complete": false,
2026-06-20T11:21:58.8633770Z           "evidence": []
2026-06-20T11:21:58.8633880Z         },
2026-06-20T11:21:58.8633997Z         "unit": {
2026-06-20T11:21:58.8634121Z           "complete": false,
2026-06-20T11:21:58.8634236Z           "evidence": []
2026-06-20T11:21:58.8634345Z         }
2026-06-20T11:21:58.8634455Z       }
2026-06-20T11:21:58.8634565Z     },
2026-06-20T11:21:58.8634683Z     {
2026-06-20T11:21:58.8634809Z       "id": "REQ-PRES-1",
2026-06-20T11:21:58.8636157Z       "title": "Presence resolution: the presence datum (last_active_node, last_active_endpoint, ts) gossiped subnet-wide via the agent-interaction heartbeat (rides registry distribution, visibility-gated) + one first-class most-recently-active resolution API consumed by notif first-fire, update-consent delivery, consent escalation, and shell wake resolution (M5 scope decision 1: resolution only — the PresenceChannel endpoint stays deferred)",
2026-06-20T11:21:58.8636390Z       "requiredStages": [
2026-06-20T11:21:58.8636507Z         "impl",
2026-06-20T11:21:58.8636625Z         "unit",
2026-06-20T11:21:58.8636741Z         "int"
2026-06-20T11:21:58.8636850Z       ],
2026-06-20T11:21:58.8636964Z       "stages": {
2026-06-20T11:21:58.8637065Z         "doc": {
2026-06-20T11:21:58.8637188Z           "complete": true,
2026-06-20T11:21:58.8637308Z           "evidence": [
2026-06-20T11:21:58.8637427Z             {
2026-06-20T11:21:58.8637555Z               "path": "docs/DEFERRED.md",
2026-06-20T11:21:58.8637676Z               "line": 11
2026-06-20T11:21:58.8637784Z             }
2026-06-20T11:21:58.8637894Z           ]
2026-06-20T11:21:58.8638014Z         },
2026-06-20T11:21:58.8638114Z         "impl": {
2026-06-20T11:21:58.8638232Z           "complete": true,
2026-06-20T11:21:58.8638343Z           "evidence": [
2026-06-20T11:21:58.8638452Z             {
2026-06-20T11:21:58.8638606Z               "path": "crates/spt-daemon/src/dispatch.rs",
2026-06-20T11:21:58.8638705Z               "line": 515
2026-06-20T11:21:58.8638824Z             },
2026-06-20T11:21:58.8638935Z             {
2026-06-20T11:21:58.8639156Z               "path": "crates/spt-daemon/src/dispatch.rs",
2026-06-20T11:21:58.8639272Z               "line": 567
2026-06-20T11:21:58.8639395Z             },
2026-06-20T11:21:58.8639509Z             {
2026-06-20T11:21:58.8639649Z               "path": "crates/spt-daemon/src/notif.rs",
2026-06-20T11:21:58.8639762Z               "line": 188
2026-06-20T11:21:58.8639867Z             },
2026-06-20T11:21:58.8639987Z             {
2026-06-20T11:21:58.8640124Z               "path": "crates/spt-daemon/src/notif.rs",
2026-06-20T11:21:58.8640231Z               "line": 214
2026-06-20T11:21:58.8640339Z             },
2026-06-20T11:21:58.8640448Z             {
2026-06-20T11:21:58.8640602Z               "path": "crates/spt-daemon/src/presence.rs",
2026-06-20T11:21:58.8640711Z               "line": 28
2026-06-20T11:21:58.8640812Z             },
2026-06-20T11:21:58.8640931Z             {
2026-06-20T11:21:58.8641078Z               "path": "crates/spt-daemon/src/presence.rs",
2026-06-20T11:21:58.8641194Z               "line": 105
2026-06-20T11:21:58.8641292Z             },
2026-06-20T11:21:58.8641401Z             {
2026-06-20T11:21:58.8641549Z               "path": "crates/spt-daemon/src/presence.rs",
2026-06-20T11:21:58.8641662Z               "line": 161
2026-06-20T11:21:58.8641790Z             },
2026-06-20T11:21:58.8641891Z             {
2026-06-20T11:21:58.8642047Z               "path": "crates/spt-daemon/src/presence.rs",
2026-06-20T11:21:58.8642162Z               "line": 180
2026-06-20T11:21:58.8642272Z             },
2026-06-20T11:21:58.8642390Z             {
2026-06-20T11:21:58.8642539Z               "path": "crates/spt-daemon/src/registryhost.rs",
2026-06-20T11:21:58.8642653Z               "line": 421
2026-06-20T11:21:58.8642749Z             },
2026-06-20T11:21:58.8642859Z             {
2026-06-20T11:21:58.8643005Z               "path": "crates/spt-daemon/src/shellwake.rs",
2026-06-20T11:21:58.8643240Z               "line": 289
2026-06-20T11:21:58.8643359Z             },
2026-06-20T11:21:58.8643474Z             {
2026-06-20T11:21:58.8643621Z               "path": "crates/spt-daemon/src/shellwake.rs",
2026-06-20T11:21:58.8643732Z               "line": 336
2026-06-20T11:21:58.8643845Z             },
2026-06-20T11:21:58.8643955Z             {
2026-06-20T11:21:58.8644104Z               "path": "crates/spt-daemon/src/shellwake.rs",
2026-06-20T11:21:58.8644225Z               "line": 362
2026-06-20T11:21:58.8644340Z             },
2026-06-20T11:21:58.8644449Z             {
2026-06-20T11:21:58.8644585Z               "path": "crates/spt-net/src/net/registry.rs",
2026-06-20T11:21:58.8644801Z               "line": 100
2026-06-20T11:21:58.8644914Z             }
2026-06-20T11:21:58.8645035Z           ]
2026-06-20T11:21:58.8645140Z         },
2026-06-20T11:21:58.8645243Z         "int": {
2026-06-20T11:21:58.8645369Z           "complete": true,
2026-06-20T11:21:58.8645492Z           "evidence": [
2026-06-20T11:21:58.8645601Z             {
2026-06-20T11:21:58.8645745Z               "path": "crates/spt-daemon/tests/dispatch.rs",
2026-06-20T11:21:58.8645868Z               "line": 563
2026-06-20T11:21:58.8645984Z             },
2026-06-20T11:21:58.8646097Z             {
2026-06-20T11:21:58.8646250Z               "path": "crates/spt-daemon/tests/twohost.rs",
2026-06-20T11:21:58.8646356Z               "line": 747
2026-06-20T11:21:58.8646474Z             },
2026-06-20T11:21:58.8646580Z             {
2026-06-20T11:21:58.8646727Z               "path": "crates/spt-daemon/tests/twohost.rs",
2026-06-20T11:21:58.8646849Z               "line": 1165
2026-06-20T11:21:58.8646964Z             }
2026-06-20T11:21:58.8647086Z           ]
2026-06-20T11:21:58.8647190Z         },
2026-06-20T11:21:58.8647310Z         "unit": {
2026-06-20T11:21:58.8647419Z           "complete": true,
2026-06-20T11:21:58.8647543Z           "evidence": [
2026-06-20T11:21:58.8647644Z             {
2026-06-20T11:21:58.8647781Z               "path": "crates/spt-daemon/src/notif.rs",
2026-06-20T11:21:58.8647902Z               "line": 674
2026-06-20T11:21:58.8648016Z             },
2026-06-20T11:21:58.8648125Z             {
2026-06-20T11:21:58.8648264Z               "path": "crates/spt-daemon/src/presence.rs",
2026-06-20T11:21:58.8648387Z               "line": 238
2026-06-20T11:21:58.8648507Z             },
2026-06-20T11:21:58.8648612Z             {
2026-06-20T11:21:58.8648759Z               "path": "crates/spt-daemon/src/presence.rs",
2026-06-20T11:21:58.8648865Z               "line": 269
2026-06-20T11:21:58.8649059Z             },
2026-06-20T11:21:58.8649180Z             {
2026-06-20T11:21:58.8649326Z               "path": "crates/spt-daemon/src/presence.rs",
2026-06-20T11:21:58.8649452Z               "line": 305
2026-06-20T11:21:58.8649552Z             },
2026-06-20T11:21:58.8649660Z             {
2026-06-20T11:21:58.8649827Z               "path": "crates/spt-daemon/src/presence.rs",
2026-06-20T11:21:58.8652694Z               "line": 336
2026-06-20T11:21:58.8652837Z             },
2026-06-20T11:21:58.8652955Z             {
2026-06-20T11:21:58.8653119Z               "path": "crates/spt-daemon/src/registryhost.rs",
2026-06-20T11:21:58.8653232Z               "line": 1217
2026-06-20T11:21:58.8653362Z             },
2026-06-20T11:21:58.8653466Z             {
2026-06-20T11:21:58.8653628Z               "path": "crates/spt-net/src/net/registry.rs",
2026-06-20T11:21:58.8653738Z               "line": 1163
2026-06-20T11:21:58.8653848Z             }
2026-06-20T11:21:58.8653958Z           ]
2026-06-20T11:21:58.8654062Z         }
2026-06-20T11:21:58.8654186Z       }
2026-06-20T11:21:58.8654283Z     },
2026-06-20T11:21:58.8654391Z     {
2026-06-20T11:21:58.8654520Z       "id": "REQ-RC-1",
2026-06-20T11:21:58.8656615Z       "title": "`spt rc <id>` — user CLI attaching a local terminal to a broker-held PTY, reusing the cross-node attach machinery (attach.rs request_attach → send_attach_input pump, spt-net AttachRecord codec); local attach is the degenerate single-node case of the cross-node path (rides REQ-TERM-3 byte-stream streaming). Read-only `--view` (watch, no stdin forwarded). Clean detach that does NOT terminate the broker-held session (KNOWN-HAZARDS: PTY ownership stays with the broker; no termination on detach). Explicit detach keybind that cannot collide with harness passthrough input (legacy capsule used a ctrl-b prefix); documented. ConPTY DSR auto-answer in the attach reader (hazard 5.5).",
2026-06-20T11:21:58.8656902Z       "requiredStages": [
2026-06-20T11:21:58.8657014Z         "impl",
2026-06-20T11:21:58.8657130Z         "unit",
2026-06-20T11:21:58.8657235Z         "int"
2026-06-20T11:21:58.8657343Z       ],
2026-06-20T11:21:58.8657558Z       "stages": {
2026-06-20T11:21:58.8657669Z         "doc": {
2026-06-20T11:21:58.8657794Z           "complete": false,
2026-06-20T11:21:58.8657919Z           "evidence": []
2026-06-20T11:21:58.8658022Z         },
2026-06-20T11:21:58.8658142Z         "impl": {
2026-06-20T11:21:58.8658262Z           "complete": true,
2026-06-20T11:21:58.8658380Z           "evidence": [
2026-06-20T11:21:58.8658486Z             {
2026-06-20T11:21:58.8658633Z               "path": "crates/spt-daemon/src/brain.rs",
2026-06-20T11:21:58.8658758Z               "line": 923
2026-06-20T11:21:58.8658862Z             },
2026-06-20T11:21:58.8659072Z             {
2026-06-20T11:21:58.8659219Z               "path": "crates/spt-daemon/src/broker.rs",
2026-06-20T11:21:58.8659334Z               "line": 1888
2026-06-20T11:21:58.8659454Z             },
2026-06-20T11:21:58.8659557Z             {
2026-06-20T11:21:58.8659707Z               "path": "crates/spt-daemon/src/nethost.rs",
2026-06-20T11:21:58.8659825Z               "line": 967
2026-06-20T11:21:58.8659934Z             },
2026-06-20T11:21:58.8660041Z             {
2026-06-20T11:21:58.8660187Z               "path": "crates/spt-daemon/src/nethost.rs",
2026-06-20T11:21:58.8660305Z               "line": 1001
2026-06-20T11:21:58.8660406Z             },
2026-06-20T11:21:58.8660515Z             {
2026-06-20T11:21:58.8660639Z               "path": "crates/spt/src/rc.rs",
2026-06-20T11:21:58.8660764Z               "line": 22
2026-06-20T11:21:58.8660863Z             },
2026-06-20T11:21:58.8660973Z             {
2026-06-20T11:21:58.8661102Z               "path": "crates/spt/src/rc.rs",
2026-06-20T11:21:58.8661201Z               "line": 701
2026-06-20T11:21:58.8661317Z             }
2026-06-20T11:21:58.8661417Z           ]
2026-06-20T11:21:58.8661535Z         },
2026-06-20T11:21:58.8661636Z         "int": {
2026-06-20T11:21:58.8661760Z           "complete": true,
2026-06-20T11:21:58.8661874Z           "evidence": [
2026-06-20T11:21:58.8661985Z             {
2026-06-20T11:21:58.8662136Z               "path": "crates/spt-daemon/tests/attach.rs",
2026-06-20T11:21:58.8662256Z               "line": 258
2026-06-20T11:21:58.8662366Z             },
2026-06-20T11:21:58.8662465Z             {
2026-06-20T11:21:58.8662612Z               "path": "crates/spt-daemon/tests/attach.rs",
2026-06-20T11:21:58.8662721Z               "line": 285
2026-06-20T11:21:58.8662834Z             },
2026-06-20T11:21:58.8662959Z             {
2026-06-20T11:21:58.8663106Z               "path": "crates/spt-daemon/tests/attach.rs",
2026-06-20T11:21:58.8663220Z               "line": 413
2026-06-20T11:21:58.8663326Z             }
2026-06-20T11:21:58.8663435Z           ]
2026-06-20T11:21:58.8663540Z         },
2026-06-20T11:21:58.8663659Z         "unit": {
2026-06-20T11:21:58.8663783Z           "complete": true,
2026-06-20T11:21:58.8663903Z           "evidence": [
2026-06-20T11:21:58.8664022Z             {
2026-06-20T11:21:58.8664164Z               "path": "crates/spt-daemon/src/nethost.rs",
2026-06-20T11:21:58.8664275Z               "line": 1327
2026-06-20T11:21:58.8664384Z             },
2026-06-20T11:21:58.8664494Z             {
2026-06-20T11:21:58.8664622Z               "path": "crates/spt/src/rc.rs",
2026-06-20T11:21:58.8664727Z               "line": 1133
2026-06-20T11:21:58.8664838Z             },
2026-06-20T11:21:58.8664951Z             {
2026-06-20T11:21:58.8665075Z               "path": "crates/spt/src/rc.rs",
2026-06-20T11:21:58.8665323Z               "line": 1162
2026-06-20T11:21:58.8665431Z             },
2026-06-20T11:21:58.8665541Z             {
2026-06-20T11:21:58.8665659Z               "path": "crates/spt/src/rc.rs",
2026-06-20T11:21:58.8665768Z               "line": 1175
2026-06-20T11:21:58.8665869Z             }
2026-06-20T11:21:58.8665973Z           ]
2026-06-20T11:21:58.8666092Z         }
2026-06-20T11:21:58.8666193Z       }
2026-06-20T11:21:58.8666335Z     },
2026-06-20T11:21:58.8666446Z     {
2026-06-20T11:21:58.8666603Z       "id": "REQ-RC-KEY-VT-TRANSLATE",
2026-06-20T11:21:58.8672836Z       "title": "On Windows, `spt rc` translates CONSOLE KEY EVENTS to standard xterm VT so ALL keys reach the hosted harness — arrows/Home/End/PgUp/PgDn/Insert/Delete/F-keys, every modifier combo, Backspace/Ctrl+Backspace — not just the byte-emitting ones. ROOT (operator HITL, doyle /diagnose): `spt rc` reads raw STDIN BYTES (spawn_stdin_reader, std::io::stdin().read); on the Windows LEGACY console (no ENABLE_VIRTUAL_TERMINAL_INPUT) the special keys produce console KEY_EVENTs, NOT stdin bytes, so the byte-pump sees nothing → those keys are DEAD. Enabling ENABLE_VIRTUAL_TERMINAL_INPUT was rejected (W7 dc07c39): on Windows Terminal it yields harness-specific win32-input-mode + broke ctrl-b detach. FIX (agnostic, full fidelity): on Windows, replace the stdin byte-read with a crossterm EVENT source (crossterm 0.28 already a dep; the picker already reads events) and translate each KeyEvent → STANDARD xterm VT bytes via a PURE translate_key_event(KeyEvent)->Vec<u8> (copy a known-correct xterm table verbatim, ADR-0001 spirit), forwarded through the SAME rc pump — the harness receives ordinary xterm VT (harness-AGNOSTIC, no win32-input-mode). Press-only (drop Repeat/Release). Detach stays the ctrl-b+'d' PREFIX, event-sourced (doyle Option B): Ctrl+B arms; armed+plain-'d'⇒Detach; armed+Ctrl+B⇒emit literal 0x02; armed+other⇒0x02 then translate(other). Non-tty stdin (piped/tests) → FALL BACK to the byte-read path (keeps e2e byte-injection working). UNIX UNCHANGED (its raw-mode byte stream already delivers proper VT; cfg-split, zero Unix regression). SUPERSEDES the W7 normalize_key_byte swap on Windows — the translator emits 0x7f for Backspace and 0x08 for Ctrl+Backspace natively (REQ-HAZARD-RC-INPUT-KEY-ENCODING folded in). NO int (a live interactive console can't be driven in CI — HITL, REQ-RUN-PICKER/RC-1 precedent); the exhaustive non-vacuous translate_key_event mapping unit + the event-detach unit ARE the surface. (v0.13.0)",
2026-06-20T11:21:58.8678183Z       "requiredStages": [
2026-06-20T11:21:58.8678426Z         "doc",
2026-06-20T11:21:58.8678616Z         "impl",
2026-06-20T11:21:58.8678823Z         "unit"
2026-06-20T11:21:58.8679095Z       ],
2026-06-20T11:21:58.8679291Z       "stages": {
2026-06-20T11:21:58.8679510Z         "doc": {
2026-06-20T11:21:58.8679720Z           "complete": true,
2026-06-20T11:21:58.8679949Z           "evidence": [
2026-06-20T11:21:58.8680159Z             {
2026-06-20T11:21:58.8680369Z               "path": "CONTEXT.md",
2026-06-20T11:21:58.8680603Z               "line": 345
2026-06-20T11:21:58.8680812Z             },
2026-06-20T11:21:58.8681036Z             {
2026-06-20T11:21:58.8681251Z               "path": "docs/KNOWN-HAZARDS.md",
2026-06-20T11:21:58.8681521Z               "line": 440
2026-06-20T11:21:58.8681726Z             }
2026-06-20T11:21:58.8681927Z           ]
2026-06-20T11:21:58.8682132Z         },
2026-06-20T11:21:58.8682336Z         "impl": {
2026-06-20T11:21:58.8682542Z           "complete": true,
2026-06-20T11:21:58.8682757Z           "evidence": [
2026-06-20T11:21:58.8682961Z             {
2026-06-20T11:21:58.8683172Z               "path": "crates/spt/src/rc.rs",
2026-06-20T11:21:58.8683430Z               "line": 226
2026-06-20T11:21:58.8683633Z             },
2026-06-20T11:21:58.8683836Z             {
2026-06-20T11:21:58.8684040Z               "path": "crates/spt/src/rc.rs",
2026-06-20T11:21:58.8684345Z               "line": 285
2026-06-20T11:21:58.8684675Z             },
2026-06-20T11:21:58.8684879Z             {
2026-06-20T11:21:58.8685132Z               "path": "crates/spt/src/rc.rs",
2026-06-20T11:21:58.8685376Z               "line": 300
2026-06-20T11:21:58.8685590Z             },
2026-06-20T11:21:58.8685790Z             {
2026-06-20T11:21:58.8686002Z               "path": "crates/spt/src/rc.rs",
2026-06-20T11:21:58.8686249Z               "line": 315
2026-06-20T11:21:58.8686452Z             },
2026-06-20T11:21:58.8686643Z             {
2026-06-20T11:21:58.8686840Z               "path": "crates/spt/src/rc.rs",
2026-06-20T11:21:58.8687098Z               "line": 364
2026-06-20T11:21:58.8687308Z             }
2026-06-20T11:21:58.8687600Z           ]
2026-06-20T11:21:58.8687794Z         },
2026-06-20T11:21:58.8687985Z         "int": {
2026-06-20T11:21:58.8688186Z           "complete": false,
2026-06-20T11:21:58.8688424Z           "evidence": []
2026-06-20T11:21:58.8688638Z         },
2026-06-20T11:21:58.8688830Z         "unit": {
2026-06-20T11:21:58.8689118Z           "complete": true,
2026-06-20T11:21:58.8689374Z           "evidence": [
2026-06-20T11:21:58.8689570Z             {
2026-06-20T11:21:58.8689770Z               "path": "crates/spt/src/rc.rs",
2026-06-20T11:21:58.8690031Z               "line": 1190
2026-06-20T11:21:58.8690266Z             },
2026-06-20T11:21:58.8690467Z             {
2026-06-20T11:21:58.8690675Z               "path": "crates/spt/src/rc.rs",
2026-06-20T11:21:58.8690929Z               "line": 1305
2026-06-20T11:21:58.8691134Z             }
2026-06-20T11:21:58.8691324Z           ]
2026-06-20T11:21:58.8691520Z         }
2026-06-20T11:21:58.8691697Z       }
2026-06-20T11:21:58.8691872Z     },
2026-06-20T11:21:58.8692067Z     {
2026-06-20T11:21:58.8692267Z       "id": "REQ-RC-MOUSE-FORWARD",
2026-06-20T11:21:58.8696804Z       "title": "On Windows, `spt rc` must FORWARD scroll-wheel events to the harness when the harness has mouse reporting on. ROOT (operator HITL): P1's RawGuard EnableMouseCapture (added for right-click paste, REQ-RC-WIN-PASTE) makes Windows Terminal forward ALL mouse — including the scroll wheel — to rc instead of scrolling its own buffer, but the rc mouse handler dropped everything except right-button-down → scroll DIED (and WT's native scrollback is stolen by the capture). Operator ruling: keep mouse capture + right-click bracketed paste AND forward scroll to the harness. FIX (doyle design, cfg(windows), folds into the rc mouse handler): TRACK the harness's mouse-reporting mode by scanning its OUTPUT stream for the DECSET set/reset — ESC[?1000h/1002h/1003h (mouse on) + ESC[?1006h (SGR ext) and their ...l (off) — into a shared MouseMode{enabled,sgr} (pump writes from output, stdin reader reads); the scan survives a sequence SPLIT across output chunks (a bounded carry buffer). The mouse handler: right-button-DOWN -> bracketed clipboard paste (unchanged, REQ-RC-WIN-PASTE); ScrollUp/Down -> translate to an xterm SGR mouse report (ESC[<64;col+1;row+1M up / ESC[<65;..M down, 0-based crossterm -> 1-based xterm) and forward ONLY when enabled && sgr (else DROP — a legacy X10 report the harness may not parse is garbage); Moved/drag/left/middle -> DROP (scroll is the operator's need; click-forward risks garbage, no click-to-position). Unix UNCHANGED (no capture; the terminal scrolls natively). (v0.13.0)",
2026-06-20T11:21:58.8700916Z       "requiredStages": [
2026-06-20T11:21:58.8701155Z         "doc",
2026-06-20T11:21:58.8701356Z         "impl",
2026-06-20T11:21:58.8701555Z         "unit"
2026-06-20T11:21:58.8701751Z       ],
2026-06-20T11:21:58.8701947Z       "stages": {
2026-06-20T11:21:58.8702156Z         "doc": {
2026-06-20T11:21:58.8702357Z           "complete": true,
2026-06-20T11:21:58.8702589Z           "evidence": [
2026-06-20T11:21:58.8702799Z             {
2026-06-20T11:21:58.8703014Z               "path": "docs/KNOWN-HAZARDS.md",
2026-06-20T11:21:58.8703305Z               "line": 461
2026-06-20T11:21:58.8703514Z             }
2026-06-20T11:21:58.8703709Z           ]
2026-06-20T11:21:58.8703901Z         },
2026-06-20T11:21:58.8704202Z         "impl": {
2026-06-20T11:21:58.8704420Z           "complete": true,
2026-06-20T11:21:58.8704649Z           "evidence": [
2026-06-20T11:21:58.8704853Z             {
2026-06-20T11:21:58.8705070Z               "path": "crates/spt/src/rc.rs",
2026-06-20T11:21:58.8705337Z               "line": 421
2026-06-20T11:21:58.8705548Z             },
2026-06-20T11:21:58.8705747Z             {
2026-06-20T11:21:58.8705948Z               "path": "crates/spt/src/rc.rs",
2026-06-20T11:21:58.8706205Z               "line": 437
2026-06-20T11:21:58.8706419Z             }
2026-06-20T11:21:58.8706615Z           ]
2026-06-20T11:21:58.8706802Z         },
2026-06-20T11:21:58.8707107Z         "int": {
2026-06-20T11:21:58.8707316Z           "complete": false,
2026-06-20T11:21:58.8707544Z           "evidence": []
2026-06-20T11:21:58.8707763Z         },
2026-06-20T11:21:58.8707951Z         "unit": {
2026-06-20T11:21:58.8708157Z           "complete": true,
2026-06-20T11:21:58.8708386Z           "evidence": [
2026-06-20T11:21:58.8708599Z             {
2026-06-20T11:21:58.8708815Z               "path": "crates/spt/src/rc.rs",
2026-06-20T11:21:58.8709177Z               "line": 1440
2026-06-20T11:21:58.8709420Z             },
2026-06-20T11:21:58.8709640Z             {
2026-06-20T11:21:58.8709844Z               "path": "crates/spt/src/rc.rs",
2026-06-20T11:21:58.8710106Z               "line": 1459
2026-06-20T11:21:58.8710320Z             },
2026-06-20T11:21:58.8710513Z             {
2026-06-20T11:21:58.8710715Z               "path": "crates/spt/src/rc.rs",
2026-06-20T11:21:58.8710981Z               "line": 1471
2026-06-20T11:21:58.8711199Z             },
2026-06-20T11:21:58.8711396Z             {
2026-06-20T11:21:58.8711602Z               "path": "crates/spt/src/rc.rs",
2026-06-20T11:21:58.8711848Z               "line": 1499
2026-06-20T11:21:58.8712063Z             }
2026-06-20T11:21:58.8712255Z           ]
2026-06-20T11:21:58.8712449Z         }
2026-06-20T11:21:58.8712635Z       }
2026-06-20T11:21:58.8712822Z     },
2026-06-20T11:21:58.8713011Z     {
2026-06-20T11:21:58.8713221Z       "id": "REQ-RC-WIN-PASTE",
2026-06-20T11:21:58.8718091Z       "title": "In an `spt rc` session neither ctrl+V nor right-click pastes (CC explicitly supports ctrl+V). ROOT (doyle /diagnose): RawGuard does only enable_raw_mode (no bracketed paste / no mouse capture / no clipboard interception); the Windows console delivers a paste as synthetic per-char KEY EVENTs (no crossterm Event::Paste), and ctrl+V translates to bare ^V forwarded to CC — but CC runs DAEMON-SIDE with NO access to the operator's LOCAL clipboard, so remote paste is fundamentally CLIENT-ORIGINATED. A multi-line paste-as-keys also becomes a \\r submit-storm. FIX (doyle design, V0.13.0-P1-RC-PASTE-DESIGN.md, cfg(windows), folds into the bug-2 event path): on a paste gesture rc reads the LOCAL clipboard + forwards a BRACKETED PASTE (ESC[200~ + content + ESC[201~); CC has bracketed-paste mode on (its TUI sets ESC[?2004h) so it treats it as a paste — content intact, no submit-storm, harness-AGNOSTIC. ctrl+V: intercept Char('v')+CONTROL in the event loop -> read_clipboard -> bracketed paste. Right-click: RawGuard also EnableMouseCapture (disables console QuickEdit + enables ENABLE_MOUSE_INPUT so right-click surfaces as Event::Mouse on legacy cmd/powershell) -> right-button -> read_clipboard -> bracketed paste; DROP all other mouse (CC has no mouse features, operator-confirmed, so capture costs nothing). read_clipboard = clipboard-win crate (cfg(windows), minimal); empty/failed = clean no-op. Content forwarded VERBATIM (literal pasted text, no per-char translation). Unix UNCHANGED (its terminal pastes natively through the byte pump). DEPENDS ON P0 (a paste chunk must not wedge the broker). (v0.13.0)",
2026-06-20T11:21:58.8722533Z       "requiredStages": [
2026-06-20T11:21:58.8722757Z         "doc",
2026-06-20T11:21:58.8722966Z         "impl",
2026-06-20T11:21:58.8723167Z         "unit"
2026-06-20T11:21:58.8723358Z       ],
2026-06-20T11:21:58.8723552Z       "stages": {
2026-06-20T11:21:58.8723753Z         "doc": {
2026-06-20T11:21:58.8724077Z           "complete": true,
2026-06-20T11:21:58.8724304Z           "evidence": [
2026-06-20T11:21:58.8724516Z             {
2026-06-20T11:21:58.8724730Z               "path": "docs/KNOWN-HAZARDS.md",
2026-06-20T11:21:58.8725002Z               "line": 447
2026-06-20T11:21:58.8725216Z             }
2026-06-20T11:21:58.8725412Z           ]
2026-06-20T11:21:58.8725602Z         },
2026-06-20T11:21:58.8725797Z         "impl": {
2026-06-20T11:21:58.8726011Z           "complete": true,
2026-06-20T11:21:58.8726247Z           "evidence": [
2026-06-20T11:21:58.8726462Z             {
2026-06-20T11:21:58.8726673Z               "path": "crates/spt/src/rc.rs",
2026-06-20T11:21:58.8727049Z               "line": 395
2026-06-20T11:21:58.8727264Z             },
2026-06-20T11:21:58.8727468Z             {
2026-06-20T11:21:58.8727668Z               "path": "crates/spt/src/rc.rs",
2026-06-20T11:21:58.8727912Z               "line": 411
2026-06-20T11:21:58.8728135Z             },
2026-06-20T11:21:58.8728322Z             {
2026-06-20T11:21:58.8728538Z               "path": "crates/spt/src/rc.rs",
2026-06-20T11:21:58.8728788Z               "line": 454
2026-06-20T11:21:58.8729057Z             },
2026-06-20T11:21:58.8729258Z             {
2026-06-20T11:21:58.8729477Z               "path": "crates/spt/src/rc.rs",
2026-06-20T11:21:58.8729734Z               "line": 468
2026-06-20T11:21:58.8729950Z             },
2026-06-20T11:21:58.8730140Z             {
2026-06-20T11:21:58.8730344Z               "path": "crates/spt/src/rc.rs",
2026-06-20T11:21:58.8730611Z               "line": 479
2026-06-20T11:21:58.8730823Z             }
2026-06-20T11:21:58.8731007Z           ]
2026-06-20T11:21:58.8731203Z         },
2026-06-20T11:21:58.8731393Z         "int": {
2026-06-20T11:21:58.8731595Z           "complete": false,
2026-06-20T11:21:58.8731825Z           "evidence": []
2026-06-20T11:21:58.8732044Z         },
2026-06-20T11:21:58.8732234Z         "unit": {
2026-06-20T11:21:58.8732454Z           "complete": true,
2026-06-20T11:21:58.8732688Z           "evidence": [
2026-06-20T11:21:58.8732896Z             {
2026-06-20T11:21:58.8733107Z               "path": "crates/spt/src/rc.rs",
2026-06-20T11:21:58.8733366Z               "line": 1381
2026-06-20T11:21:58.8733584Z             },
2026-06-20T11:21:58.8733769Z             {
2026-06-20T11:21:58.8733981Z               "path": "crates/spt/src/rc.rs",
2026-06-20T11:21:58.8734245Z               "line": 1402
2026-06-20T11:21:58.8734465Z             },
2026-06-20T11:21:58.8734661Z             {
2026-06-20T11:21:58.8734869Z               "path": "crates/spt/src/rc.rs",
2026-06-20T11:21:58.8735122Z               "line": 1423
2026-06-20T11:21:58.8735342Z             }
2026-06-20T11:21:58.8735533Z           ]
2026-06-20T11:21:58.8735709Z         }
2026-06-20T11:21:58.8735901Z       }
2026-06-20T11:21:58.8736095Z     },
2026-06-20T11:21:58.8736277Z     {
2026-06-20T11:21:58.8736480Z       "id": "REQ-RCVIEW-1",
2026-06-20T11:21:58.8741129Z       "title": "Remote-attach controller/viewer model (CONTEXT.md:317): a session's broker OutputLog serves ONE interactive controller (input + EXCLUSIVE PTY resize; its viewport sets the size, sent on attach + every window change via crossterm Event::Resize) plus ANY NUMBER of read-only `--view` attachers (output-only, no input, no resize; client-side letterbox — center+pad when larger, clip+1-line indicator when smaller; only the local ctrl-b d detach chord). Attach intent is three-valued (`Viewer | Control | Take`, wire-default Control): Control to a FREE endpoint becomes controller, Control to a CONTROLLED endpoint is REFUSED with guidance (`--view`/`--take`) — never auto-viewer, never silent-displace. Wire adds (additive, N-1 skip-unknown): `Request.intent`, `Resize{rows,cols}` (controller-only), `Size{rows,cols}` (→viewer), `Displaced{by}` (→displaced controller). The brain-resume cursor (delivered_through, ADR-0018) tracks the CONTROLLER ONLY; viewers replay from their own from_seq and never move it. Dormancy keys on the controller ONLY: controller attach wakes / controller detach goes dormant (even with viewers present); viewer attach/detach is wake-neutral and may watch a dormant endpoint as-is. v1: viewing is gated identically to driving — a viewer runs the same access_check(Unsolicited) as a controller (watching reveals full session contents = a real disclosure); a lighter distinct watch-gate is deferred to cross-subnet/finer-consent (CONTEXT.md:317 'driving ≠ watching' = the future seam).",
2026-06-20T11:21:58.8745368Z       "requiredStages": [
2026-06-20T11:21:58.8745597Z         "doc",
2026-06-20T11:21:58.8745783Z         "impl",
2026-06-20T11:21:58.8745983Z         "unit",
2026-06-20T11:21:58.8746185Z         "int"
2026-06-20T11:21:58.8746471Z       ],
2026-06-20T11:21:58.8746660Z       "stages": {
2026-06-20T11:21:58.8746861Z         "doc": {
2026-06-20T11:21:58.8747070Z           "complete": true,
2026-06-20T11:21:58.8747292Z           "evidence": [
2026-06-20T11:21:58.8747497Z             {
2026-06-20T11:21:58.8747697Z               "path": "CONTEXT.md",
2026-06-20T11:21:58.8747949Z               "line": 342
2026-06-20T11:21:58.8748160Z             }
2026-06-20T11:21:58.8748350Z           ]
2026-06-20T11:21:58.8748531Z         },
2026-06-20T11:21:58.8748718Z         "impl": {
2026-06-20T11:21:58.8748922Z           "complete": true,
2026-06-20T11:21:58.8749242Z           "evidence": [
2026-06-20T11:21:58.8749470Z             {
2026-06-20T11:21:58.8749686Z               "path": "crates/spt-daemon/src/attach.rs",
2026-06-20T11:21:58.8749960Z               "line": 354
2026-06-20T11:21:58.8750177Z             },
2026-06-20T11:21:58.8750374Z             {
2026-06-20T11:21:58.8750597Z               "path": "crates/spt-daemon/src/broker.rs",
2026-06-20T11:21:58.8750878Z               "line": 562
2026-06-20T11:21:58.8751084Z             },
2026-06-20T11:21:58.8751284Z             {
2026-06-20T11:21:58.8751498Z               "path": "crates/spt-daemon/src/broker.rs",
2026-06-20T11:21:58.8751780Z               "line": 573
2026-06-20T11:21:58.8751990Z             },
2026-06-20T11:21:58.8752181Z             {
2026-06-20T11:21:58.8752403Z               "path": "crates/spt-net/src/net/attach.rs",
2026-06-20T11:21:58.8752683Z               "line": 41
2026-06-20T11:21:58.8752897Z             },
2026-06-20T11:21:58.8753092Z             {
2026-06-20T11:21:58.8753313Z               "path": "crates/spt-net/src/net/attach.rs",
2026-06-20T11:21:58.8753593Z               "line": 62
2026-06-20T11:21:58.8753804Z             },
2026-06-20T11:21:58.8753994Z             {
2026-06-20T11:21:58.8754204Z               "path": "crates/spt-store/src/info.rs",
2026-06-20T11:21:58.8754481Z               "line": 309
2026-06-20T11:21:58.8754690Z             },
2026-06-20T11:21:58.8754890Z             {
2026-06-20T11:21:58.8755101Z               "path": "crates/spt/src/rc.rs",
2026-06-20T11:21:58.8755356Z               "line": 701
2026-06-20T11:21:58.8755567Z             }
2026-06-20T11:21:58.8755762Z           ]
2026-06-20T11:21:58.8755952Z         },
2026-06-20T11:21:58.8756134Z         "int": {
2026-06-20T11:21:58.8756343Z           "complete": true,
2026-06-20T11:21:58.8756572Z           "evidence": [
2026-06-20T11:21:58.8756792Z             {
2026-06-20T11:21:58.8757012Z               "path": "crates/spt-daemon/tests/attach.rs",
2026-06-20T11:21:58.8757292Z               "line": 913
2026-06-20T11:21:58.8757511Z             },
2026-06-20T11:21:58.8757697Z             {
2026-06-20T11:21:58.8757917Z               "path": "crates/spt-daemon/tests/attach.rs",
2026-06-20T11:21:58.8758195Z               "line": 953
2026-06-20T11:21:58.8758410Z             },
2026-06-20T11:21:58.8758605Z             {
2026-06-20T11:21:58.8758819Z               "path": "crates/spt-daemon/tests/attach.rs",
2026-06-20T11:21:58.8759186Z               "line": 1000
2026-06-20T11:21:58.8759416Z             },
2026-06-20T11:21:58.8759612Z             {
2026-06-20T11:21:58.8759835Z               "path": "crates/spt-daemon/tests/attach.rs",
2026-06-20T11:21:58.8760121Z               "line": 1112
2026-06-20T11:21:58.8760463Z             }
2026-06-20T11:21:58.8760652Z           ]
2026-06-20T11:21:58.8760828Z         },
2026-06-20T11:21:58.8761019Z         "unit": {
2026-06-20T11:21:58.8761215Z           "complete": true,
2026-06-20T11:21:58.8761443Z           "evidence": [
2026-06-20T11:21:58.8761653Z             {
2026-06-20T11:21:58.8765742Z               "path": "crates/spt-net/src/net/attach.rs",
2026-06-20T11:21:58.8766080Z               "line": 175
2026-06-20T11:21:58.8766317Z             },
2026-06-20T11:21:58.8766521Z             {
2026-06-20T11:21:58.8766761Z               "path": "crates/spt-net/src/net/attach.rs",
2026-06-20T11:21:58.8767037Z               "line": 195
2026-06-20T11:21:58.8767404Z             }
2026-06-20T11:21:58.8767605Z           ]
2026-06-20T11:21:58.8767785Z         }
2026-06-20T11:21:58.8767968Z       }
2026-06-20T11:21:58.8768151Z     },
2026-06-20T11:21:58.8768318Z     {
2026-06-20T11:21:58.8768517Z       "id": "REQ-REACH-1",
2026-06-20T11:21:58.8768802Z       "title": "Off-node remote-drive detection + file transfer",
2026-06-20T11:21:58.8769219Z       "requiredStages": [
2026-06-20T11:21:58.8769432Z         "impl",
2026-06-20T11:21:58.8769638Z         "unit",
2026-06-20T11:21:58.8769838Z         "int"
2026-06-20T11:21:58.8770028Z       ],
2026-06-20T11:21:58.8770219Z       "stages": {
2026-06-20T11:21:58.8770410Z         "doc": {
2026-06-20T11:21:58.8770624Z           "complete": false,
2026-06-20T11:21:58.8770858Z           "evidence": []
2026-06-20T11:21:58.8771076Z         },
2026-06-20T11:21:58.8771269Z         "impl": {
2026-06-20T11:21:58.8771475Z           "complete": true,
2026-06-20T11:21:58.8771698Z           "evidence": [
2026-06-20T11:21:58.8771922Z             {
2026-06-20T11:21:58.8772142Z               "path": "crates/spt-daemon/src/broker.rs",
2026-06-20T11:21:58.8772429Z               "line": 562
2026-06-20T11:21:58.8772637Z             },
2026-06-20T11:21:58.8772833Z             {
2026-06-20T11:21:58.8773058Z               "path": "crates/spt-daemon/src/xfer.rs",
2026-06-20T11:21:58.8773330Z               "line": 76
2026-06-20T11:21:58.8773542Z             },
2026-06-20T11:21:58.8773733Z             {
2026-06-20T11:21:58.8773950Z               "path": "crates/spt-daemon/src/xfer.rs",
2026-06-20T11:21:58.8774212Z               "line": 222
2026-06-20T11:21:58.8774428Z             },
2026-06-20T11:21:58.8774619Z             {
2026-06-20T11:21:58.8774837Z               "path": "crates/spt-daemon/src/xfer.rs",
2026-06-20T11:21:58.8775100Z               "line": 422
2026-06-20T11:21:58.8775310Z             },
2026-06-20T11:21:58.8775505Z             {
2026-06-20T11:21:58.8775719Z               "path": "crates/spt-daemon/src/xfer.rs",
2026-06-20T11:21:58.8775987Z               "line": 529
2026-06-20T11:21:58.8776212Z             },
2026-06-20T11:21:58.8776400Z             {
2026-06-20T11:21:58.8776620Z               "path": "crates/spt-net/src/net/xfer.rs",
2026-06-20T11:21:58.8776882Z               "line": 39
2026-06-20T11:21:58.8777096Z             },
2026-06-20T11:21:58.8777283Z             {
2026-06-20T11:21:58.8777498Z               "path": "crates/spt-store/src/info.rs",
2026-06-20T11:21:58.8777754Z               "line": 301
2026-06-20T11:21:58.8777969Z             },
2026-06-20T11:21:58.8778165Z             {
2026-06-20T11:21:58.8778374Z               "path": "crates/spt-store/src/xfer.rs",
2026-06-20T11:21:58.8778640Z               "line": 88
2026-06-20T11:21:58.8778850Z             },
2026-06-20T11:21:58.8779120Z             {
2026-06-20T11:21:58.8779329Z               "path": "crates/spt-store/src/xfer.rs",
2026-06-20T11:21:58.8779610Z               "line": 98
2026-06-20T11:21:58.8779825Z             },
2026-06-20T11:21:58.8780016Z             {
2026-06-20T11:21:58.8780254Z               "path": "crates/spt/src/api/reporting.rs",
2026-06-20T11:21:58.8780527Z               "line": 233
2026-06-20T11:21:58.8780742Z             }
2026-06-20T11:21:58.8780936Z           ]
2026-06-20T11:21:58.8781127Z         },
2026-06-20T11:21:58.8781319Z         "int": {
2026-06-20T11:21:58.8781522Z           "complete": true,
2026-06-20T11:21:58.8781872Z           "evidence": [
2026-06-20T11:21:58.8782073Z             {
2026-06-20T11:21:58.8782302Z               "path": "crates/spt-daemon/tests/dispatch.rs",
2026-06-20T11:21:58.8782588Z               "line": 415
2026-06-20T11:21:58.8782806Z             },
2026-06-20T11:21:58.8782998Z             {
2026-06-20T11:21:58.8783227Z               "path": "crates/spt-daemon/tests/dispatch.rs",
2026-06-20T11:21:58.8783508Z               "line": 520
2026-06-20T11:21:58.8783722Z             },
2026-06-20T11:21:58.8783915Z             {
2026-06-20T11:21:58.8784131Z               "path": "crates/spt-daemon/tests/twohost.rs",
2026-06-20T11:21:58.8784520Z               "line": 998
2026-06-20T11:21:58.8784734Z             },
2026-06-20T11:21:58.8784926Z             {
2026-06-20T11:21:58.8785145Z               "path": "crates/spt-daemon/tests/twohost.rs",
2026-06-20T11:21:58.8785425Z               "line": 1383
2026-06-20T11:21:58.8785641Z             }
2026-06-20T11:21:58.8785833Z           ]
2026-06-20T11:21:58.8786022Z         },
2026-06-20T11:21:58.8786222Z         "unit": {
2026-06-20T11:21:58.8786428Z           "complete": true,
2026-06-20T11:21:58.8786652Z           "evidence": [
2026-06-20T11:21:58.8786852Z             {
2026-06-20T11:21:58.8787074Z               "path": "crates/spt-daemon/src/xfer.rs",
2026-06-20T11:21:58.8787336Z               "line": 639
2026-06-20T11:21:58.8787557Z             },
2026-06-20T11:21:58.8787753Z             {
2026-06-20T11:21:58.8787970Z               "path": "crates/spt-daemon/src/xfer.rs",
2026-06-20T11:21:58.8788243Z               "line": 660
2026-06-20T11:21:58.8788458Z             },
2026-06-20T11:21:58.8788658Z             {
2026-06-20T11:21:58.8788877Z               "path": "crates/spt-daemon/tests/attach.rs",
2026-06-20T11:21:58.8789224Z               "line": 768
2026-06-20T11:21:58.8789457Z             },
2026-06-20T11:21:58.8789642Z             {
2026-06-20T11:21:58.8789851Z               "path": "crates/spt-daemon/tests/xfer.rs",
2026-06-20T11:21:58.8790105Z               "line": 93
2026-06-20T11:21:58.8790305Z             },
2026-06-20T11:21:58.8790495Z             {
2026-06-20T11:21:58.8790715Z               "path": "crates/spt-daemon/tests/xfer.rs",
2026-06-20T11:21:58.8790982Z               "line": 224
2026-06-20T11:21:58.8791186Z             },
2026-06-20T11:21:58.8791372Z             {
2026-06-20T11:21:58.8791593Z               "path": "crates/spt-net/src/net/xfer.rs",
2026-06-20T11:21:58.8791865Z               "line": 96
2026-06-20T11:21:58.8792072Z             },
2026-06-20T11:21:58.8792263Z             {
2026-06-20T11:21:58.8792484Z               "path": "crates/spt-net/src/net/xfer.rs",
2026-06-20T11:21:58.8792756Z               "line": 146
2026-06-20T11:21:58.8792967Z             },
2026-06-20T11:21:58.8793172Z             {
2026-06-20T11:21:58.8793385Z               "path": "crates/spt-store/src/info.rs",
2026-06-20T11:21:58.8793654Z               "line": 698
2026-06-20T11:21:58.8793873Z             },
2026-06-20T11:21:58.8794068Z             {
2026-06-20T11:21:58.8794282Z               "path": "crates/spt-store/src/xfer.rs",
2026-06-20T11:21:58.8794550Z               "line": 118
2026-06-20T11:21:58.8794768Z             },
2026-06-20T11:21:58.8794961Z             {
2026-06-20T11:21:58.8795176Z               "path": "crates/spt-store/src/xfer.rs",
2026-06-20T11:21:58.8795439Z               "line": 148
2026-06-20T11:21:58.8795647Z             },
2026-06-20T11:21:58.8795834Z             {
2026-06-20T11:21:58.8796059Z               "path": "crates/spt/src/api/reporting.rs",
2026-06-20T11:21:58.8796329Z               "line": 928
2026-06-20T11:21:58.8796539Z             }
2026-06-20T11:21:58.8796736Z           ]
2026-06-20T11:21:58.8796935Z         }
2026-06-20T11:21:58.8797125Z       }
2026-06-20T11:21:58.8797308Z     },
2026-06-20T11:21:58.8797497Z     {
2026-06-20T11:21:58.8797693Z       "id": "REQ-REACH-2",
2026-06-20T11:21:58.8797983Z       "title": "Remote command execution (deferred, consent-gated)",
2026-06-20T11:21:58.8798417Z       "requiredStages": [],
2026-06-20T11:21:58.8798642Z       "stages": {
2026-06-20T11:21:58.8798846Z         "doc": {
2026-06-20T11:21:58.8799147Z           "complete": false,
2026-06-20T11:21:58.8799394Z           "evidence": []
2026-06-20T11:21:58.8799605Z         },
2026-06-20T11:21:58.8799794Z         "impl": {
2026-06-20T11:21:58.8799989Z           "complete": false,
2026-06-20T11:21:58.8800221Z           "evidence": []
2026-06-20T11:21:58.8800435Z         },
2026-06-20T11:21:58.8800627Z         "int": {
2026-06-20T11:21:58.8800826Z           "complete": false,
2026-06-20T11:21:58.8801055Z           "evidence": []
2026-06-20T11:21:58.8801275Z         },
2026-06-20T11:21:58.8801609Z         "unit": {
2026-06-20T11:21:58.8801815Z           "complete": false,
2026-06-20T11:21:58.8802037Z           "evidence": []
2026-06-20T11:21:58.8802252Z         }
2026-06-20T11:21:58.8802434Z       }
2026-06-20T11:21:58.8802614Z     },
2026-06-20T11:21:58.8802809Z     {
2026-06-20T11:21:58.8803002Z       "id": "REQ-READY-AGENT-RESUME",
2026-06-20T11:21:58.8806722Z       "title": "An offline ReadyAgent shows in `spt endpoint run`'s picker Resume-from-history and resumes correctly — closing the gap that today only LiveAgents do. ROOT: a harness-hosted ready bind (ReadyAgent::start_homed, ready.rs) writes info.json DIRECTLY and never appends the session ledger (unlike the shared establish_perch:250 live path), so a ready agent — though it has a session_id — produces ZERO ledger rows → the picker's offline+local Resume-from-history (which gates on ledger rows) never offers it. FIX (1): ledger the ready bind (ReadyAgent::start_homed → sessions::append Boot, mirroring establish_perch). FIX (2): `spt endpoint run --resume <session>` honors the adapter MANIFEST's endpoint TYPE — a ReadyAgent manifest (no [session.psyche_init]) resumes as a ready endpoint (poll listener, NO psyche-host); a LiveAgent (with psyche_init) as live. NO new bringup mode + NO picker changes (operator 2026-06-18): `spt endpoint run` is the spt-hosted ENDPOINT bringup for BOTH types, the type IS the adapter-manifest's concern (psyche-host already keys on psyche_init presence) — so (2) likely already holds; VERIFY at code, build only the residual. (v0.12.0)",
2026-06-20T11:21:58.8810016Z       "requiredStages": [
2026-06-20T11:21:58.8810245Z         "doc",
2026-06-20T11:21:58.8810444Z         "impl",
2026-06-20T11:21:58.8810643Z         "unit",
2026-06-20T11:21:58.8810834Z         "int"
2026-06-20T11:21:58.8811033Z       ],
2026-06-20T11:21:58.8811225Z       "stages": {
2026-06-20T11:21:58.8811416Z         "doc": {
2026-06-20T11:21:58.8811634Z           "complete": true,
2026-06-20T11:21:58.8811863Z           "evidence": [
2026-06-20T11:21:58.8812074Z             {
2026-06-20T11:21:58.8812283Z               "path": "CONTEXT.md",
2026-06-20T11:21:58.8812526Z               "line": 372
2026-06-20T11:21:58.8812746Z             }
2026-06-20T11:21:58.8812946Z           ]
2026-06-20T11:21:58.8813127Z         },
2026-06-20T11:21:58.8813316Z         "impl": {
2026-06-20T11:21:58.8813519Z           "complete": true,
2026-06-20T11:21:58.8813749Z           "evidence": [
2026-06-20T11:21:58.8813958Z             {
2026-06-20T11:21:58.8814177Z               "path": "crates/spt-msg/src/ready.rs",
2026-06-20T11:21:58.8814440Z               "line": 110
2026-06-20T11:21:58.8814660Z             }
2026-06-20T11:21:58.8814849Z           ]
2026-06-20T11:21:58.8815041Z         },
2026-06-20T11:21:58.8815232Z         "int": {
2026-06-20T11:21:58.8815441Z           "complete": true,
2026-06-20T11:21:58.8815657Z           "evidence": [
2026-06-20T11:21:58.8815859Z             {
2026-06-20T11:21:58.8816100Z               "path": "crates/spt/tests/ready_resume_ledger_e2e.rs",
2026-06-20T11:21:58.8816419Z               "line": 26
2026-06-20T11:21:58.8816625Z             }
2026-06-20T11:21:58.8816825Z           ]
2026-06-20T11:21:58.8817012Z         },
2026-06-20T11:21:58.8817207Z         "unit": {
2026-06-20T11:21:58.8817421Z           "complete": true,
2026-06-20T11:21:58.8817636Z           "evidence": [
2026-06-20T11:21:58.8817969Z             {
2026-06-20T11:21:58.8818195Z               "path": "crates/spt-msg/src/ready.rs",
2026-06-20T11:21:58.8818471Z               "line": 320
2026-06-20T11:21:58.8818674Z             }
2026-06-20T11:21:58.8818861Z           ]
2026-06-20T11:21:58.8819118Z         }
2026-06-20T11:21:58.8819308Z       }
2026-06-20T11:21:58.8819499Z     },
2026-06-20T11:21:58.8819680Z     {
2026-06-20T11:21:58.8819861Z       "id": "REQ-REL-1",
2026-06-20T11:21:58.8820358Z       "title": "spt-releases publish-target repo: README public face, licensing split, Pages docs at the permanent lapse-proof canonical URL (ADR-0014)",
2026-06-20T11:21:58.8821014Z       "requiredStages": [
2026-06-20T11:21:58.8821231Z         "doc",
2026-06-20T11:21:58.8821428Z         "impl"
2026-06-20T11:21:58.8821618Z       ],
2026-06-20T11:21:58.8821808Z       "stages": {
2026-06-20T11:21:58.8822005Z         "doc": {
2026-06-20T11:21:58.8822209Z           "complete": true,
2026-06-20T11:21:58.8822443Z           "evidence": [
2026-06-20T11:21:58.8822658Z             {
2026-06-20T11:21:58.8822964Z               "path": "docs/adr/0014-publish-target-repo-and-lapse-proof-canonical-url.md",
2026-06-20T11:21:58.8823353Z               "line": 3
2026-06-20T11:21:58.8823564Z             }
2026-06-20T11:21:58.8823748Z           ]
2026-06-20T11:21:58.8823925Z         },
2026-06-20T11:21:58.8824112Z         "impl": {
2026-06-20T11:21:58.8824328Z           "complete": true,
2026-06-20T11:21:58.8824557Z           "evidence": [
2026-06-20T11:21:58.8824775Z             {
2026-06-20T11:21:58.8825000Z               "path": ".github/workflows/docs-publish.yml",
2026-06-20T11:21:58.8825286Z               "line": 11
2026-06-20T11:21:58.8825497Z             },
2026-06-20T11:21:58.8825696Z             {
2026-06-20T11:21:58.8825840Z               "path": "crates/xtask/src/main.rs",
2026-06-20T11:21:58.8825948Z               "line": 265
2026-06-20T11:21:58.8826063Z             }
2026-06-20T11:21:58.8826174Z           ]
2026-06-20T11:21:58.8826296Z         },
2026-06-20T11:21:58.8826414Z         "int": {
2026-06-20T11:21:58.8826524Z           "complete": false,
2026-06-20T11:21:58.8826651Z           "evidence": []
2026-06-20T11:21:58.8826770Z         },
2026-06-20T11:21:58.8826881Z         "unit": {
2026-06-20T11:21:58.8826998Z           "complete": false,
2026-06-20T11:21:58.8827109Z           "evidence": []
2026-06-20T11:21:58.8827229Z         }
2026-06-20T11:21:58.8827337Z       }
2026-06-20T11:21:58.8827448Z     },
2026-06-20T11:21:58.8827557Z     {
2026-06-20T11:21:58.8827686Z       "id": "REQ-REL-2",
2026-06-20T11:21:58.8828177Z       "title": "Release asset set consumable by the self-updater: platform binaries, SHA256SUMS, SignedRelease metadata, manifest schema, mock-adapter zip; tag-triggered cross-repo pipeline",
2026-06-20T11:21:58.8828301Z       "requiredStages": [
2026-06-20T11:21:58.8828421Z         "impl",
2026-06-20T11:21:58.8828534Z         "int"
2026-06-20T11:21:58.8828659Z       ],
2026-06-20T11:21:58.8828764Z       "stages": {
2026-06-20T11:21:58.8828888Z         "doc": {
2026-06-20T11:21:58.8829089Z           "complete": true,
2026-06-20T11:21:58.8829206Z           "evidence": [
2026-06-20T11:21:58.8829335Z             {
2026-06-20T11:21:58.8829474Z               "path": "docs/RELEASE-RUNBOOK.md",
2026-06-20T11:21:58.8829592Z               "line": 6
2026-06-20T11:21:58.8829703Z             }
2026-06-20T11:21:58.8829821Z           ]
2026-06-20T11:21:58.8829920Z         },
2026-06-20T11:21:58.8830046Z         "impl": {
2026-06-20T11:21:58.8830164Z           "complete": true,
2026-06-20T11:21:58.8830284Z           "evidence": [
2026-06-20T11:21:58.8830393Z             {
2026-06-20T11:21:58.8830546Z               "path": ".github/workflows/release.yml",
2026-06-20T11:21:58.8830661Z               "line": 16
2026-06-20T11:21:58.8830775Z             },
2026-06-20T11:21:58.8830889Z             {
2026-06-20T11:21:58.8831018Z               "path": "crates/xtask/src/main.rs",
2026-06-20T11:21:58.8831122Z               "line": 352
2026-06-20T11:21:58.8831342Z             },
2026-06-20T11:21:58.8831456Z             {
2026-06-20T11:21:58.8831584Z               "path": "crates/xtask/src/main.rs",
2026-06-20T11:21:58.8831701Z               "line": 426
2026-06-20T11:21:58.8831810Z             },
2026-06-20T11:21:58.8831935Z             {
2026-06-20T11:21:58.8832068Z               "path": "crates/xtask/src/main.rs",
2026-06-20T11:21:58.8832178Z               "line": 588
2026-06-20T11:21:58.8832288Z             },
2026-06-20T11:21:58.8832411Z             {
2026-06-20T11:21:58.8832546Z               "path": "crates/xtask/src/main.rs",
2026-06-20T11:21:58.8832665Z               "line": 720
2026-06-20T11:21:58.8832870Z             }
2026-06-20T11:21:58.8832984Z           ]
2026-06-20T11:21:58.8833098Z         },
2026-06-20T11:21:58.8833204Z         "int": {
2026-06-20T11:21:58.8833327Z           "complete": true,
2026-06-20T11:21:58.8833446Z           "evidence": [
2026-06-20T11:21:58.8833556Z             {
2026-06-20T11:21:58.8833713Z               "path": "crates/spt/tests/release_verify_e2e.rs",
2026-06-20T11:21:58.8833834Z               "line": 13
2026-06-20T11:21:58.8833941Z             }
2026-06-20T11:21:58.8834047Z           ]
2026-06-20T11:21:58.8834158Z         },
2026-06-20T11:21:58.8834270Z         "unit": {
2026-06-20T11:21:58.8834398Z           "complete": false,
2026-06-20T11:21:58.8834513Z           "evidence": []
2026-06-20T11:21:58.8834621Z         }
2026-06-20T11:21:58.8834735Z       }
2026-06-20T11:21:58.8834841Z     },
2026-06-20T11:21:58.8834959Z     {
2026-06-20T11:21:58.8835073Z       "id": "REQ-REL-3",
2026-06-20T11:21:58.8835522Z       "title": "Two-key release-signing trust anchor: primary + offline never-used recovery, both pubkeys embedded in the binary's trusted set, manual local signing (ADR-0015)",
2026-06-20T11:21:58.8835650Z       "requiredStages": [
2026-06-20T11:21:58.8835757Z         "impl",
2026-06-20T11:21:58.8835875Z         "unit"
2026-06-20T11:21:58.8835984Z       ],
2026-06-20T11:21:58.8836109Z       "stages": {
2026-06-20T11:21:58.8836217Z         "doc": {
2026-06-20T11:21:58.8836342Z           "complete": false,
2026-06-20T11:21:58.8836466Z           "evidence": []
2026-06-20T11:21:58.8836581Z         },
2026-06-20T11:21:58.8836701Z         "impl": {
2026-06-20T11:21:58.8836819Z           "complete": true,
2026-06-20T11:21:58.8836946Z           "evidence": [
2026-06-20T11:21:58.8837060Z             {
2026-06-20T11:21:58.8837211Z               "path": "crates/spt-daemon/src/release.rs",
2026-06-20T11:21:58.8837340Z               "line": 237
2026-06-20T11:21:58.8837451Z             },
2026-06-20T11:21:58.8837568Z             {
2026-06-20T11:21:58.8837708Z               "path": "crates/spt-daemon/src/release.rs",
2026-06-20T11:21:58.8837831Z               "line": 289
2026-06-20T11:21:58.8837945Z             },
2026-06-20T11:21:58.8838060Z             {
2026-06-20T11:21:58.8838197Z               "path": "crates/xtask/src/main.rs",
2026-06-20T11:21:58.8838313Z               "line": 329
2026-06-20T11:21:58.8838431Z             },
2026-06-20T11:21:58.8838541Z             {
2026-06-20T11:21:58.8838680Z               "path": "crates/xtask/src/main.rs",
2026-06-20T11:21:58.8838785Z               "line": 353
2026-06-20T11:21:58.8838899Z             },
2026-06-20T11:21:58.8839099Z             {
2026-06-20T11:21:58.8839229Z               "path": "crates/xtask/src/main.rs",
2026-06-20T11:21:58.8839352Z               "line": 394
2026-06-20T11:21:58.8839476Z             }
2026-06-20T11:21:58.8839578Z           ]
2026-06-20T11:21:58.8839691Z         },
2026-06-20T11:21:58.8839808Z         "int": {
2026-06-20T11:21:58.8839933Z           "complete": false,
2026-06-20T11:21:58.8840052Z           "evidence": []
2026-06-20T11:21:58.8840180Z         },
2026-06-20T11:21:58.8840291Z         "unit": {
2026-06-20T11:21:58.8840405Z           "complete": true,
2026-06-20T11:21:58.8840530Z           "evidence": [
2026-06-20T11:21:58.8840638Z             {
2026-06-20T11:21:58.8840786Z               "path": "crates/spt-daemon/src/release.rs",
2026-06-20T11:21:58.8841011Z               "line": 1045
2026-06-20T11:21:58.8841110Z             },
2026-06-20T11:21:58.8841221Z             {
2026-06-20T11:21:58.8841368Z               "path": "crates/spt-daemon/src/release.rs",
2026-06-20T11:21:58.8841493Z               "line": 1104
2026-06-20T11:21:58.8841602Z             }
2026-06-20T11:21:58.8841716Z           ]
2026-06-20T11:21:58.8841822Z         }
2026-06-20T11:21:58.8841935Z       }
2026-06-20T11:21:58.8842044Z     },
2026-06-20T11:21:58.8842158Z     {
2026-06-20T11:21:58.8842290Z       "id": "REQ-RUN-PICKER",
2026-06-20T11:21:58.8847036Z       "title": "Interactive `spt endpoint run` picker (ratatui TUI): bare `spt endpoint run` (no --adapter/--id) enters an in-process picker (flags-present = the REQ-HOST-RUN-1 non-interactive path, untouched). Layer 1 picks kind (Create new | Pick existing). Create-new: choose a registered kind=\"harness\" adapter with its shipped+local profiles tree-nested (registry::registered / manifest.profiles / local_profile_names) → enter a charset-validated id → start. Pick-existing: category select (left/right) over [<cwd-project> | Local node | Subnet], endpoints grouped + alphabetically sorted per category, a status square per endpoint (online green ■ / offline gray ▢ — the blue \"attached\" tri-state + Kick are DEFERRED to a broker attach-presence slice, M12-W2-RULING Q1), type-to-filter (`/`, nucleo-matcher), a pinned keybind legend, and a right-half two-pane description (harness adapter:profile · best-effort project history newest→oldest from the contextstore p-<project> branches, empty-if-none · `spt endpoint description`). Confirm layer offers status-dependent options — Attach/Start/View (rc pump / cmd_endpoint_run) · Instantiate-locally (remote) · Change-harness-adapter (offline) · Fork (cmd_fork) · Resume-from-history (offline+LOCAL only; enumerate spt_store::sessions::last_k, titles `<project> @ <ts> (…id5)`, feed session_id → cmd_endpoint_run --resume). A single action enum is the source of truth so a future tap-mode (phone PTY) layers on without re-coupling to keybinds. EVERY terminal action routes through cmd_endpoint_run / existing CLI fns — no second bringup path.",
2026-06-20T11:21:58.8847299Z       "requiredStages": [
2026-06-20T11:21:58.8847407Z         "doc",
2026-06-20T11:21:58.8847530Z         "impl",
2026-06-20T11:21:58.8847630Z         "unit"
2026-06-20T11:21:58.8847733Z       ],
2026-06-20T11:21:58.8847852Z       "stages": {
2026-06-20T11:21:58.8847953Z         "doc": {
2026-06-20T11:21:58.8848067Z           "complete": true,
2026-06-20T11:21:58.8848181Z           "evidence": [
2026-06-20T11:21:58.8848297Z             {
2026-06-20T11:21:58.8848415Z               "path": "CONTEXT.md",
2026-06-20T11:21:58.8848540Z               "line": 349
2026-06-20T11:21:58.8848654Z             }
2026-06-20T11:21:58.8848763Z           ]
2026-06-20T11:21:58.8848883Z         },
2026-06-20T11:21:58.8849068Z         "impl": {
2026-06-20T11:21:58.8849189Z           "complete": true,
2026-06-20T11:21:58.8849292Z           "evidence": [
2026-06-20T11:21:58.8849402Z             {
2026-06-20T11:21:58.8849531Z               "path": "crates/spt/src/cli.rs",
2026-06-20T11:21:58.8849650Z               "line": 958
2026-06-20T11:21:58.8849760Z             },
2026-06-20T11:21:58.8849870Z             {
2026-06-20T11:21:58.8849993Z               "path": "crates/spt/src/cli.rs",
2026-06-20T11:21:58.8850104Z               "line": 968
2026-06-20T11:21:58.8850213Z             },
2026-06-20T11:21:58.8850326Z             {
2026-06-20T11:21:58.8850465Z               "path": "crates/spt/src/picker/data.rs",
2026-06-20T11:21:58.8850594Z               "line": 9
2026-06-20T11:21:58.8850697Z             },
2026-06-20T11:21:58.8850808Z             {
2026-06-20T11:21:58.8850951Z               "path": "crates/spt/src/picker/data.rs",
2026-06-20T11:21:58.8851055Z               "line": 67
2026-06-20T11:21:58.8851171Z             },
2026-06-20T11:21:58.8851284Z             {
2026-06-20T11:21:58.8851424Z               "path": "crates/spt/src/picker/mod.rs",
2026-06-20T11:21:58.8851675Z               "line": 16
2026-06-20T11:21:58.8851815Z             },
2026-06-20T11:21:58.8851938Z             {
2026-06-20T11:21:58.8852072Z               "path": "crates/spt/src/picker/mod.rs",
2026-06-20T11:21:58.8852176Z               "line": 254
2026-06-20T11:21:58.8852276Z             },
2026-06-20T11:21:58.8852387Z             {
2026-06-20T11:21:58.8852533Z               "path": "crates/spt/src/picker/model.rs",
2026-06-20T11:21:58.8852656Z               "line": 11
2026-06-20T11:21:58.8852766Z             },
2026-06-20T11:21:58.8855956Z             {
2026-06-20T11:21:58.8856136Z               "path": "crates/spt/src/picker/model.rs",
2026-06-20T11:21:58.8856403Z               "line": 115
2026-06-20T11:21:58.8856528Z             },
2026-06-20T11:21:58.8856637Z             {
2026-06-20T11:21:58.8856785Z               "path": "crates/spt/src/picker/model.rs",
2026-06-20T11:21:58.8856905Z               "line": 554
2026-06-20T11:21:58.8857009Z             },
2026-06-20T11:21:58.8857133Z             {
2026-06-20T11:21:58.8857262Z               "path": "crates/spt/src/picker/model.rs",
2026-06-20T11:21:58.8857381Z               "line": 635
2026-06-20T11:21:58.8857487Z             },
2026-06-20T11:21:58.8857596Z             {
2026-06-20T11:21:58.8857739Z               "path": "crates/spt/src/picker/model.rs",
2026-06-20T11:21:58.8857836Z               "line": 694
2026-06-20T11:21:58.8857953Z             },
2026-06-20T11:21:58.8858066Z             {
2026-06-20T11:21:58.8858204Z               "path": "crates/spt/src/picker/model.rs",
2026-06-20T11:21:58.8858317Z               "line": 747
2026-06-20T11:21:58.8858431Z             },
2026-06-20T11:21:58.8858552Z             {
2026-06-20T11:21:58.8858679Z               "path": "crates/spt/src/picker/model.rs",
2026-06-20T11:21:58.8858790Z               "line": 785
2026-06-20T11:21:58.8858895Z             },
2026-06-20T11:21:58.8859085Z             {
2026-06-20T11:21:58.8859223Z               "path": "crates/spt/src/picker/view.rs",
2026-06-20T11:21:58.8859342Z               "line": 8
2026-06-20T11:21:58.8859485Z             }
2026-06-20T11:21:58.8859590Z           ]
2026-06-20T11:21:58.8859705Z         },
2026-06-20T11:21:58.8859810Z         "int": {
2026-06-20T11:21:58.8859933Z           "complete": false,
2026-06-20T11:21:58.8860054Z           "evidence": []
2026-06-20T11:21:58.8860167Z         },
2026-06-20T11:21:58.8860267Z         "unit": {
2026-06-20T11:21:58.8860378Z           "complete": true,
2026-06-20T11:21:58.8860500Z           "evidence": [
2026-06-20T11:21:58.8860606Z             {
2026-06-20T11:21:58.8860736Z               "path": "crates/spt/src/cli.rs",
2026-06-20T11:21:58.8860843Z               "line": 7638
2026-06-20T11:21:58.8860957Z             },
2026-06-20T11:21:58.8861063Z             {
2026-06-20T11:21:58.8861187Z               "path": "crates/spt/src/cli.rs",
2026-06-20T11:21:58.8861305Z               "line": 7649
2026-06-20T11:21:58.8861402Z             },
2026-06-20T11:21:58.8861520Z             {
2026-06-20T11:21:58.8861660Z               "path": "crates/spt/src/picker/model.rs",
2026-06-20T11:21:58.8861773Z               "line": 879
2026-06-20T11:21:58.8861887Z             },
2026-06-20T11:21:58.8861998Z             {
2026-06-20T11:21:58.8862126Z               "path": "crates/spt/src/picker/model.rs",
2026-06-20T11:21:58.8862235Z               "line": 928
2026-06-20T11:21:58.8862355Z             },
2026-06-20T11:21:58.8862455Z             {
2026-06-20T11:21:58.8862599Z               "path": "crates/spt/src/picker/model.rs",
2026-06-20T11:21:58.8862713Z               "line": 979
2026-06-20T11:21:58.8862827Z             },
2026-06-20T11:21:58.8862933Z             {
2026-06-20T11:21:58.8863070Z               "path": "crates/spt/src/picker/model.rs",
2026-06-20T11:21:58.8863179Z               "line": 996
2026-06-20T11:21:58.8863293Z             },
2026-06-20T11:21:58.8863406Z             {
2026-06-20T11:21:58.8863533Z               "path": "crates/spt/src/picker/model.rs",
2026-06-20T11:21:58.8863640Z               "line": 1005
2026-06-20T11:21:58.8863858Z             },
2026-06-20T11:21:58.8863969Z             {
2026-06-20T11:21:58.8864115Z               "path": "crates/spt/src/picker/model.rs",
2026-06-20T11:21:58.8864231Z               "line": 1016
2026-06-20T11:21:58.8864340Z             },
2026-06-20T11:21:58.8864444Z             {
2026-06-20T11:21:58.8864574Z               "path": "crates/spt/src/picker/model.rs",
2026-06-20T11:21:58.8864693Z               "line": 1038
2026-06-20T11:21:58.8864798Z             },
2026-06-20T11:21:58.8864903Z             {
2026-06-20T11:21:58.8865036Z               "path": "crates/spt/src/picker/model.rs",
2026-06-20T11:21:58.8865146Z               "line": 1057
2026-06-20T11:21:58.8865356Z             },
2026-06-20T11:21:58.8865461Z             {
2026-06-20T11:21:58.8865604Z               "path": "crates/spt/src/picker/model.rs",
2026-06-20T11:21:58.8865713Z               "line": 1107
2026-06-20T11:21:58.8865833Z             },
2026-06-20T11:21:58.8865942Z             {
2026-06-20T11:21:58.8866078Z               "path": "crates/spt/src/picker/model.rs",
2026-06-20T11:21:58.8866198Z               "line": 1136
2026-06-20T11:21:58.8866310Z             },
2026-06-20T11:21:58.8866425Z             {
2026-06-20T11:21:58.8866549Z               "path": "crates/spt/src/picker/model.rs",
2026-06-20T11:21:58.8866658Z               "line": 1149
2026-06-20T11:21:58.8866778Z             },
2026-06-20T11:21:58.8866878Z             {
2026-06-20T11:21:58.8867011Z               "path": "crates/spt/src/picker/model.rs",
2026-06-20T11:21:58.8867127Z               "line": 1215
2026-06-20T11:21:58.8867241Z             },
2026-06-20T11:21:58.8867350Z             {
2026-06-20T11:21:58.8867498Z               "path": "crates/spt/src/picker/model.rs",
2026-06-20T11:21:58.8867607Z               "line": 1256
2026-06-20T11:21:58.8867718Z             },
2026-06-20T11:21:58.8867832Z             {
2026-06-20T11:21:58.8867965Z               "path": "crates/spt/src/picker/model.rs",
2026-06-20T11:21:58.8868081Z               "line": 1272
2026-06-20T11:21:58.8868188Z             },
2026-06-20T11:21:58.8868299Z             {
2026-06-20T11:21:58.8868448Z               "path": "crates/spt/src/picker/view.rs",
2026-06-20T11:21:58.8868546Z               "line": 491
2026-06-20T11:21:58.8868665Z             },
2026-06-20T11:21:58.8868765Z             {
2026-06-20T11:21:58.8868901Z               "path": "crates/spt/src/picker/view.rs",
2026-06-20T11:21:58.8869073Z               "line": 506
2026-06-20T11:21:58.8869187Z             },
2026-06-20T11:21:58.8869297Z             {
2026-06-20T11:21:58.8869440Z               "path": "crates/spt/src/picker/view.rs",
2026-06-20T11:21:58.8869578Z               "line": 524
2026-06-20T11:21:58.8869675Z             },
2026-06-20T11:21:58.8869784Z             {
2026-06-20T11:21:58.8869916Z               "path": "crates/spt/src/picker/view.rs",
2026-06-20T11:21:58.8870022Z               "line": 546
2026-06-20T11:21:58.8870141Z             },
2026-06-20T11:21:58.8870260Z             {
2026-06-20T11:21:58.8870403Z               "path": "crates/spt/src/picker/view.rs",
2026-06-20T11:21:58.8870513Z               "line": 556
2026-06-20T11:21:58.8870619Z             },
2026-06-20T11:21:58.8870732Z             {
2026-06-20T11:21:58.8870865Z               "path": "crates/spt/src/picker/view.rs",
2026-06-20T11:21:58.8870981Z               "line": 582
2026-06-20T11:21:58.8871084Z             }
2026-06-20T11:21:58.8871190Z           ]
2026-06-20T11:21:58.8871292Z         }
2026-06-20T11:21:58.8871413Z       }
2026-06-20T11:21:58.8871512Z     },
2026-06-20T11:21:58.8871623Z     {
2026-06-20T11:21:58.8871742Z       "id": "REQ-RUN-SHORTCUT",
2026-06-20T11:21:58.8876469Z       "title": "`<basename>-<id>` launcher shortcut generation (picker `s` keybind, M12-W2-T2.4): from any pre-start options set the picker writes/updates a `<basename>-<id>` launcher at the project root baking the current selection's non-interactive `spt endpoint run` flags (terminal actions only: adapter[:profile] + id + (create|resume) + (start|attach|view); Kick/Instantiate/Change-adapter/Fork are interactive-only, not bakeable). BASENAME IS A PARAMETER (operator rev. 2026-06-14): harness-agnostic spt-core defaults to `spt` (→ `spt-<id>`); an adapter/flow OVERRIDES it (spt-claude-code → `cc`), so spt-core NEVER bakes `cc` (a harness name) into itself. The basename must be a DISTINCT token, never bare `spt` (a `spt.cmd` would shadow the real `spt.exe` only under cmd.exe cwd-first search, silently no-op in PowerShell/Unix, and self-recurse). The script is the CURRENT OS's native form — `.cmd` on Windows (NOT `.ps1`: default PATHEXT excludes `.ps1` so a bare/ext-less name never resolves one; `.cmd` is PATHEXT-resolvable), POSIX `sh` (+chmod +x) on Unix (a single portable form can't be both). The generated header documents the invocation reality (cmd.exe bare `<name>` in the project dir / PowerShell `.\\<name>` / Unix `./<name>`; a truly-bare basename on PATH = a PATH-installed launcher, `/spt:setup`'s job). Overwrite is SENTINEL-guarded: the generator writes + checks a generated-by header marker — it overwrites its own prior output freely, but REFUSES + warns if a same-named file lacks the sentinel (never clobber a user file). Requires the additive `--create` flag on `Run{}` (the default-fresh made explicit; N-1-safe).",
2026-06-20T11:21:58.8876810Z       "requiredStages": [
2026-06-20T11:21:58.8876927Z         "doc",
2026-06-20T11:21:58.8877037Z         "impl",
2026-06-20T11:21:58.8877148Z         "unit"
2026-06-20T11:21:58.8877256Z       ],
2026-06-20T11:21:58.8877363Z       "stages": {
2026-06-20T11:21:58.8877482Z         "doc": {
2026-06-20T11:21:58.8877605Z           "complete": true,
2026-06-20T11:21:58.8877716Z           "evidence": [
2026-06-20T11:21:58.8877834Z             {
2026-06-20T11:21:58.8877953Z               "path": "CONTEXT.md",
2026-06-20T11:21:58.8878063Z               "line": 390
2026-06-20T11:21:58.8878167Z             }
2026-06-20T11:21:58.8878273Z           ]
2026-06-20T11:21:58.8878387Z         },
2026-06-20T11:21:58.8878492Z         "impl": {
2026-06-20T11:21:58.8878617Z           "complete": true,
2026-06-20T11:21:58.8878739Z           "evidence": [
2026-06-20T11:21:58.8878845Z             {
2026-06-20T11:21:58.8879059Z               "path": "crates/spt/src/picker/shortcut.rs",
2026-06-20T11:21:58.8879177Z               "line": 39
2026-06-20T11:21:58.8879297Z             },
2026-06-20T11:21:58.8879409Z             {
2026-06-20T11:21:58.8879562Z               "path": "crates/spt/src/picker/shortcut.rs",
2026-06-20T11:21:58.8879682Z               "line": 79
2026-06-20T11:21:58.8879795Z             },
2026-06-20T11:21:58.8879890Z             {
2026-06-20T11:21:58.8880025Z               "path": "crates/spt/src/picker/shortcut.rs",
2026-06-20T11:21:58.8880143Z               "line": 162
2026-06-20T11:21:58.8880254Z             }
2026-06-20T11:21:58.8880372Z           ]
2026-06-20T11:21:58.8880481Z         },
2026-06-20T11:21:58.8880606Z         "int": {
2026-06-20T11:21:58.8880729Z           "complete": false,
2026-06-20T11:21:58.8880854Z           "evidence": []
2026-06-20T11:21:58.8880972Z         },
2026-06-20T11:21:58.8881082Z         "unit": {
2026-06-20T11:21:58.8881193Z           "complete": true,
2026-06-20T11:21:58.8881306Z           "evidence": [
2026-06-20T11:21:58.8881416Z             {
2026-06-20T11:21:58.8881556Z               "path": "crates/spt/src/picker/shortcut.rs",
2026-06-20T11:21:58.8881674Z               "line": 206
2026-06-20T11:21:58.8881785Z             },
2026-06-20T11:21:58.8881898Z             {
2026-06-20T11:21:58.8882044Z               "path": "crates/spt/src/picker/shortcut.rs",
2026-06-20T11:21:58.8882159Z               "line": 222
2026-06-20T11:21:58.8882274Z             },
2026-06-20T11:21:58.8882382Z             {
2026-06-20T11:21:58.8882512Z               "path": "crates/spt/src/picker/shortcut.rs",
2026-06-20T11:21:58.8882631Z               "line": 238
2026-06-20T11:21:58.8882736Z             },
2026-06-20T11:21:58.8882846Z             {
2026-06-20T11:21:58.8882984Z               "path": "crates/spt/src/picker/shortcut.rs",
2026-06-20T11:21:58.8883222Z               "line": 251
2026-06-20T11:21:58.8883327Z             },
2026-06-20T11:21:58.8883438Z             {
2026-06-20T11:21:58.8883585Z               "path": "crates/spt/src/picker/shortcut.rs",
2026-06-20T11:21:58.8883695Z               "line": 258
2026-06-20T11:21:58.8883809Z             }
2026-06-20T11:21:58.8883908Z           ]
2026-06-20T11:21:58.8884024Z         }
2026-06-20T11:21:58.8884129Z       }
2026-06-20T11:21:58.8884233Z     },
2026-06-20T11:21:58.8884346Z     {
2026-06-20T11:21:58.8884474Z       "id": "REQ-SEAM-ACTIVITY",
2026-06-20T11:21:58.8884678Z       "title": "Activity/idle reported via api sentinels, not PTY quiescence",
2026-06-20T11:21:58.8884907Z       "requiredStages": [
2026-06-20T11:21:58.8885022Z         "impl",
2026-06-20T11:21:58.8885131Z         "unit"
2026-06-20T11:21:58.8885240Z       ],
2026-06-20T11:21:58.8885356Z       "stages": {
2026-06-20T11:21:58.8885465Z         "doc": {
2026-06-20T11:21:58.8885583Z           "complete": false,
2026-06-20T11:21:58.8885694Z           "evidence": []
2026-06-20T11:21:58.8885808Z         },
2026-06-20T11:21:58.8885913Z         "impl": {
2026-06-20T11:21:58.8886038Z           "complete": true,
2026-06-20T11:21:58.8886161Z           "evidence": [
2026-06-20T11:21:58.8886266Z             {
2026-06-20T11:21:58.8886414Z               "path": "crates/spt/src/api/delivery.rs",
2026-06-20T11:21:58.8886532Z               "line": 18
2026-06-20T11:21:58.8886648Z             },
2026-06-20T11:21:58.8886752Z             {
2026-06-20T11:21:58.8886887Z               "path": "crates/spt/src/api/delivery.rs",
2026-06-20T11:21:58.8886997Z               "line": 35
2026-06-20T11:21:58.8887114Z             },
2026-06-20T11:21:58.8887213Z             {
2026-06-20T11:21:58.8887351Z               "path": "crates/spt/src/api/delivery.rs",
2026-06-20T11:21:58.8887473Z               "line": 72
2026-06-20T11:21:58.8887593Z             }
2026-06-20T11:21:58.8887717Z           ]
2026-06-20T11:21:58.8887826Z         },
2026-06-20T11:21:58.8887932Z         "int": {
2026-06-20T11:21:58.8888056Z           "complete": false,
2026-06-20T11:21:58.8888174Z           "evidence": []
2026-06-20T11:21:58.8888290Z         },
2026-06-20T11:21:58.8888389Z         "unit": {
2026-06-20T11:21:58.8888508Z           "complete": true,
2026-06-20T11:21:58.8888633Z           "evidence": [
2026-06-20T11:21:58.8888742Z             {
2026-06-20T11:21:58.8888886Z               "path": "crates/spt/src/api/delivery.rs",
2026-06-20T11:21:58.8889057Z               "line": 239
2026-06-20T11:21:58.8889173Z             },
2026-06-20T11:21:58.8889277Z             {
2026-06-20T11:21:58.8889414Z               "path": "crates/spt/src/api/delivery.rs",
2026-06-20T11:21:58.8889540Z               "line": 256
2026-06-20T11:21:58.8889647Z             },
2026-06-20T11:21:58.8889765Z             {
2026-06-20T11:21:58.8889899Z               "path": "crates/spt/src/api/delivery.rs",
2026-06-20T11:21:58.8890012Z               "line": 265
2026-06-20T11:21:58.8890122Z             }
2026-06-20T11:21:58.8890227Z           ]
2026-06-20T11:21:58.8890340Z         }
2026-06-20T11:21:58.8890456Z       }
2026-06-20T11:21:58.8890555Z     },
2026-06-20T11:21:58.8890655Z     {
2026-06-20T11:21:58.8890780Z       "id": "REQ-SEAM-CAPABILITY",
2026-06-20T11:21:58.8890946Z       "title": "Hostable endpoint-types capability declaration",
2026-06-20T11:21:58.8891071Z       "requiredStages": [
2026-06-20T11:21:58.8891190Z         "impl",
2026-06-20T11:21:58.8891294Z         "unit"
2026-06-20T11:21:58.8891419Z       ],
2026-06-20T11:21:58.8891523Z       "stages": {
2026-06-20T11:21:58.8891633Z         "doc": {
2026-06-20T11:21:58.8891753Z           "complete": false,
2026-06-20T11:21:58.8891857Z           "evidence": []
2026-06-20T11:21:58.8891962Z         },
2026-06-20T11:21:58.8892068Z         "impl": {
2026-06-20T11:21:58.8892200Z           "complete": true,
2026-06-20T11:21:58.8892320Z           "evidence": [
2026-06-20T11:21:58.8892426Z             {
2026-06-20T11:21:58.8892567Z               "path": "crates/spt/src/api/reporting.rs",
2026-06-20T11:21:58.8892825Z               "line": 598
2026-06-20T11:21:58.8892938Z             }
2026-06-20T11:21:58.8893054Z           ]
2026-06-20T11:21:58.8893158Z         },
2026-06-20T11:21:58.8893267Z         "int": {
2026-06-20T11:21:58.8893387Z           "complete": false,
2026-06-20T11:21:58.8893501Z           "evidence": []
2026-06-20T11:21:58.8893601Z         },
2026-06-20T11:21:58.8893726Z         "unit": {
2026-06-20T11:21:58.8893839Z           "complete": true,
2026-06-20T11:21:58.8893959Z           "evidence": [
2026-06-20T11:21:58.8894073Z             {
2026-06-20T11:21:58.8894216Z               "path": "crates/spt/src/api/reporting.rs",
2026-06-20T11:21:58.8894435Z               "line": 967
2026-06-20T11:21:58.8894550Z             }
2026-06-20T11:21:58.8894661Z           ]
2026-06-20T11:21:58.8894769Z         }
2026-06-20T11:21:58.8894882Z       }
2026-06-20T11:21:58.8894988Z     },
2026-06-20T11:21:58.8895105Z     {
2026-06-20T11:21:58.8895219Z       "id": "REQ-SEAM-HISTORY",
2026-06-20T11:21:58.8895429Z       "title": "History subsystem (fetcher / locate-normalize / native store)",
2026-06-20T11:21:58.8895548Z       "requiredStages": [
2026-06-20T11:21:58.8895663Z         "impl",
2026-06-20T11:21:58.8895782Z         "unit",
2026-06-20T11:21:58.8895887Z         "int"
2026-06-20T11:21:58.8896006Z       ],
2026-06-20T11:21:58.8896120Z       "stages": {
2026-06-20T11:21:58.8896241Z         "doc": {
2026-06-20T11:21:58.8896349Z           "complete": false,
2026-06-20T11:21:58.8896454Z           "evidence": []
2026-06-20T11:21:58.8896569Z         },
2026-06-20T11:21:58.8896683Z         "impl": {
2026-06-20T11:21:58.8896807Z           "complete": true,
2026-06-20T11:21:58.8896927Z           "evidence": [
2026-06-20T11:21:58.8897031Z             {
2026-06-20T11:21:58.8897175Z               "path": "crates/spt-live/src/echo.rs",
2026-06-20T11:21:58.8897288Z               "line": 24
2026-06-20T11:21:58.8897408Z             },
2026-06-20T11:21:58.8897519Z             {
2026-06-20T11:21:58.8897665Z               "path": "crates/spt-live/src/history.rs",
2026-06-20T11:21:58.8897769Z               "line": 22
2026-06-20T11:21:58.8897878Z             }
2026-06-20T11:21:58.8897991Z           ]
2026-06-20T11:21:58.8898096Z         },
2026-06-20T11:21:58.8898202Z         "int": {
2026-06-20T11:21:58.8898320Z           "complete": true,
2026-06-20T11:21:58.8898439Z           "evidence": [
2026-06-20T11:21:58.8898540Z             {
2026-06-20T11:21:58.8898686Z               "path": "crates/spt/tests/contract_e2e.rs",
2026-06-20T11:21:58.8898807Z               "line": 260
2026-06-20T11:21:58.8898912Z             }
2026-06-20T11:21:58.8899083Z           ]
2026-06-20T11:21:58.8899202Z         },
2026-06-20T11:21:58.8899321Z         "unit": {
2026-06-20T11:21:58.8899451Z           "complete": true,
2026-06-20T11:21:58.8899573Z           "evidence": [
2026-06-20T11:21:58.8899689Z             {
2026-06-20T11:21:58.8899823Z               "path": "crates/spt-live/src/echo.rs",
2026-06-20T11:21:58.8899946Z               "line": 171
2026-06-20T11:21:58.8900057Z             },
2026-06-20T11:21:58.8900184Z             {
2026-06-20T11:21:58.8900312Z               "path": "crates/spt-live/src/echo.rs",
2026-06-20T11:21:58.8900426Z               "line": 200
2026-06-20T11:21:58.8900534Z             },
2026-06-20T11:21:58.8900638Z             {
2026-06-20T11:21:58.8900777Z               "path": "crates/spt-live/src/echo.rs",
2026-06-20T11:21:58.8900900Z               "line": 220
2026-06-20T11:21:58.8901021Z             },
2026-06-20T11:21:58.8901145Z             {
2026-06-20T11:21:58.8901273Z               "path": "crates/spt-live/src/history.rs",
2026-06-20T11:21:58.8901393Z               "line": 199
2026-06-20T11:21:58.8901502Z             },
2026-06-20T11:21:58.8901626Z             {
2026-06-20T11:21:58.8901755Z               "path": "crates/spt-live/src/history.rs",
2026-06-20T11:21:58.8901878Z               "line": 219
2026-06-20T11:21:58.8901994Z             },
2026-06-20T11:21:58.8902102Z             {
2026-06-20T11:21:58.8902352Z               "path": "crates/spt-live/src/history.rs",
2026-06-20T11:21:58.8902455Z               "line": 244
2026-06-20T11:21:58.8902580Z             },
2026-06-20T11:21:58.8902690Z             {
2026-06-20T11:21:58.8902822Z               "path": "crates/spt-live/src/history.rs",
2026-06-20T11:21:58.8902948Z               "line": 276
2026-06-20T11:21:58.8903075Z             },
2026-06-20T11:21:58.8903198Z             {
2026-06-20T11:21:58.8903327Z               "path": "crates/spt-live/src/history.rs",
2026-06-20T11:21:58.8903450Z               "line": 297
2026-06-20T11:21:58.8903556Z             },
2026-06-20T11:21:58.8903666Z             {
2026-06-20T11:21:58.8903895Z               "path": "crates/spt-live/src/history.rs",
2026-06-20T11:21:58.8904014Z               "line": 324
2026-06-20T11:21:58.8904123Z             }
2026-06-20T11:21:58.8904234Z           ]
2026-06-20T11:21:58.8904347Z         }
2026-06-20T11:21:58.8904452Z       }
2026-06-20T11:21:58.8904563Z     },
2026-06-20T11:21:58.8904671Z     {
2026-06-20T11:21:58.8904800Z       "id": "REQ-SEAM-INJECT",
2026-06-20T11:21:58.8904986Z       "title": "inject-input methods configurable per activity-state",
2026-06-20T11:21:58.8905106Z       "requiredStages": [
2026-06-20T11:21:58.8905217Z         "impl",
2026-06-20T11:21:58.8905324Z         "unit"
2026-06-20T11:21:58.8905438Z       ],
2026-06-20T11:21:58.8905543Z       "stages": {
2026-06-20T11:21:58.8905655Z         "doc": {
2026-06-20T11:21:58.8905779Z           "complete": false,
2026-06-20T11:21:58.8905904Z           "evidence": []
2026-06-20T11:21:58.8906008Z         },
2026-06-20T11:21:58.8906118Z         "impl": {
2026-06-20T11:21:58.8906237Z           "complete": true,
2026-06-20T11:21:58.8906366Z           "evidence": [
2026-06-20T11:21:58.8906481Z             {
2026-06-20T11:21:58.8906623Z               "path": "crates/spt/src/api/delivery.rs",
2026-06-20T11:21:58.8906733Z               "line": 19
2026-06-20T11:21:58.8906847Z             },
2026-06-20T11:21:58.8906952Z             {
2026-06-20T11:21:58.8907096Z               "path": "crates/spt/src/api/delivery.rs",
2026-06-20T11:21:58.8907214Z               "line": 111
2026-06-20T11:21:58.8907319Z             }
2026-06-20T11:21:58.8907426Z           ]
2026-06-20T11:21:58.8907534Z         },
2026-06-20T11:21:58.8907658Z         "int": {
2026-06-20T11:21:58.8907760Z           "complete": false,
2026-06-20T11:21:58.8907882Z           "evidence": []
2026-06-20T11:21:58.8907987Z         },
2026-06-20T11:21:58.8908103Z         "unit": {
2026-06-20T11:21:58.8908229Z           "complete": true,
2026-06-20T11:21:58.8908329Z           "evidence": [
2026-06-20T11:21:58.8908448Z             {
2026-06-20T11:21:58.8908594Z               "path": "crates/spt/src/api/delivery.rs",
2026-06-20T11:21:58.8908709Z               "line": 345
2026-06-20T11:21:58.8908819Z             },
2026-06-20T11:21:58.8908927Z             {
2026-06-20T11:21:58.8909152Z               "path": "crates/spt/src/api/delivery.rs",
2026-06-20T11:21:58.8909256Z               "line": 365
2026-06-20T11:21:58.8909391Z             }
2026-06-20T11:21:58.8909505Z           ]
2026-06-20T11:21:58.8909615Z         }
2026-06-20T11:21:58.8909729Z       }
2026-06-20T11:21:58.8909843Z     },
2026-06-20T11:21:58.8909958Z     {
2026-06-20T11:21:58.8910077Z       "id": "REQ-SEAM-POSTSPAWN",
2026-06-20T11:21:58.8910234Z       "title": "post-spawn / api bind seam with boot nonce",
2026-06-20T11:21:58.8910349Z       "requiredStages": [
2026-06-20T11:21:58.8910458Z         "impl",
2026-06-20T11:21:58.8910569Z         "unit"
2026-06-20T11:21:58.8910678Z       ],
2026-06-20T11:21:58.8910796Z       "stages": {
2026-06-20T11:21:58.8910905Z         "doc": {
2026-06-20T11:21:58.8911033Z           "complete": false,
2026-06-20T11:21:58.8911146Z           "evidence": []
2026-06-20T11:21:58.8911256Z         },
2026-06-20T11:21:58.8911381Z         "impl": {
2026-06-20T11:21:58.8911489Z           "complete": true,
2026-06-20T11:21:58.8911610Z           "evidence": [
2026-06-20T11:21:58.8911715Z             {
2026-06-20T11:21:58.8911967Z               "path": "crates/spt/src/api/startup.rs",
2026-06-20T11:21:58.8912076Z               "line": 18
2026-06-20T11:21:58.8912201Z             },
2026-06-20T11:21:58.8912320Z             {
2026-06-20T11:21:58.8912452Z               "path": "crates/spt/src/api/startup.rs",
2026-06-20T11:21:58.8912568Z               "line": 431
2026-06-20T11:21:58.8912677Z             }
2026-06-20T11:21:58.8912777Z           ]
2026-06-20T11:21:58.8912888Z         },
2026-06-20T11:21:58.8912996Z         "int": {
2026-06-20T11:21:58.8913111Z           "complete": false,
2026-06-20T11:21:58.8913236Z           "evidence": []
2026-06-20T11:21:58.8913450Z         },
2026-06-20T11:21:58.8913565Z         "unit": {
2026-06-20T11:21:58.8913687Z           "complete": true,
2026-06-20T11:21:58.8913811Z           "evidence": [
2026-06-20T11:21:58.8913922Z             {
2026-06-20T11:21:58.8914063Z               "path": "crates/spt/src/api/startup.rs",
2026-06-20T11:21:58.8914169Z               "line": 881
2026-06-20T11:21:58.8914279Z             },
2026-06-20T11:21:58.8914387Z             {
2026-06-20T11:21:58.8914527Z               "path": "crates/spt/src/api/startup.rs",
2026-06-20T11:21:58.8914645Z               "line": 891
2026-06-20T11:21:58.8914765Z             }
2026-06-20T11:21:58.8914865Z           ]
2026-06-20T11:21:58.8914969Z         }
2026-06-20T11:21:58.8915094Z       }
2026-06-20T11:21:58.8915198Z     },
2026-06-20T11:21:58.8915312Z     {
2026-06-20T11:21:58.8915433Z       "id": "REQ-SEAM-PSYCHE",
2026-06-20T11:21:58.8915594Z       "title": "spawn-psyche seam (fresh + resume templates)",
2026-06-20T11:21:58.8915709Z       "requiredStages": [
2026-06-20T11:21:58.8915819Z         "impl",
2026-06-20T11:21:58.8915927Z         "unit",
2026-06-20T11:21:58.8916046Z         "int"
2026-06-20T11:21:58.8916169Z       ],
2026-06-20T11:21:58.8916278Z       "stages": {
2026-06-20T11:21:58.8916387Z         "doc": {
2026-06-20T11:21:58.8916512Z           "complete": false,
2026-06-20T11:21:58.8916625Z           "evidence": []
2026-06-20T11:21:58.8916731Z         },
2026-06-20T11:21:58.8916840Z         "impl": {
2026-06-20T11:21:58.8916963Z           "complete": true,
2026-06-20T11:21:58.8917079Z           "evidence": [
2026-06-20T11:21:58.8917202Z             {
2026-06-20T11:21:58.8917342Z               "path": "crates/spt-live/src/psyche.rs",
2026-06-20T11:21:58.8917451Z               "line": 19
2026-06-20T11:21:58.8917564Z             },
2026-06-20T11:21:58.8917666Z             {
2026-06-20T11:21:58.8917799Z               "path": "crates/spt/src/api/live.rs",
2026-06-20T11:21:58.8917908Z               "line": 12
2026-06-20T11:21:58.8918019Z             },
2026-06-20T11:21:58.8918132Z             {
2026-06-20T11:21:58.8918267Z               "path": "crates/spt/src/api/startup.rs",
2026-06-20T11:21:58.8918376Z               "line": 301
2026-06-20T11:21:58.8918485Z             }
2026-06-20T11:21:58.8918601Z           ]
2026-06-20T11:21:58.8918700Z         },
2026-06-20T11:21:58.8918818Z         "int": {
2026-06-20T11:21:58.8919017Z           "complete": true,
2026-06-20T11:21:58.8919130Z           "evidence": [
2026-06-20T11:21:58.8919240Z             {
2026-06-20T11:21:58.8919383Z               "path": "crates/spt/tests/contract_e2e.rs",
2026-06-20T11:21:58.8919501Z               "line": 259
2026-06-20T11:21:58.8919613Z             }
2026-06-20T11:21:58.8919731Z           ]
2026-06-20T11:21:58.8919850Z         },
2026-06-20T11:21:58.8919960Z         "unit": {
2026-06-20T11:21:58.8920079Z           "complete": true,
2026-06-20T11:21:58.8920189Z           "evidence": [
2026-06-20T11:21:58.8920299Z             {
2026-06-20T11:21:58.8920427Z               "path": "crates/spt-live/src/psyche.rs",
2026-06-20T11:21:58.8920557Z               "line": 195
2026-06-20T11:21:58.8920670Z             },
2026-06-20T11:21:58.8920771Z             {
2026-06-20T11:21:58.8920909Z               "path": "crates/spt-live/src/psyche.rs",
2026-06-20T11:21:58.8921023Z               "line": 202
2026-06-20T11:21:58.8921134Z             },
2026-06-20T11:21:58.8921333Z             {
2026-06-20T11:21:58.8921480Z               "path": "crates/spt-live/src/psyche.rs",
2026-06-20T11:21:58.8921593Z               "line": 225
2026-06-20T11:21:58.8921701Z             },
2026-06-20T11:21:58.8921811Z             {
2026-06-20T11:21:58.8921950Z               "path": "crates/spt-live/src/pulse.rs",
2026-06-20T11:21:58.8922054Z               "line": 106
2026-06-20T11:21:58.8922155Z             },
2026-06-20T11:21:58.8922265Z             {
2026-06-20T11:21:58.8922393Z               "path": "crates/spt-live/src/pulse.rs",
2026-06-20T11:21:58.8922508Z               "line": 137
2026-06-20T11:21:58.8922622Z             },
2026-06-20T11:21:58.8922851Z             {
2026-06-20T11:21:58.8922998Z               "path": "crates/spt-live/src/pulse.rs",
2026-06-20T11:21:58.8923110Z               "line": 161
2026-06-20T11:21:58.8923218Z             }
2026-06-20T11:21:58.8923327Z           ]
2026-06-20T11:21:58.8923438Z         }
2026-06-20T11:21:58.8923556Z       }
2026-06-20T11:21:58.8923656Z     },
2026-06-20T11:21:58.8923777Z     {
2026-06-20T11:21:58.8923904Z       "id": "REQ-SEAM-RESUME",
2026-06-20T11:21:58.8924101Z       "title": "resume-session seam (fresh-with-preload / continue-existing)",
2026-06-20T11:21:58.8924219Z       "requiredStages": [
2026-06-20T11:21:58.8924332Z         "impl",
2026-06-20T11:21:58.8924453Z         "unit"
2026-06-20T11:21:58.8924557Z       ],
2026-06-20T11:21:58.8924666Z       "stages": {
2026-06-20T11:21:58.8924777Z         "doc": {
2026-06-20T11:21:58.8924890Z           "complete": false,
2026-06-20T11:21:58.8925011Z           "evidence": []
2026-06-20T11:21:58.8925120Z         },
2026-06-20T11:21:58.8925243Z         "impl": {
2026-06-20T11:21:58.8925359Z           "complete": true,
2026-06-20T11:21:58.8925477Z           "evidence": [
2026-06-20T11:21:58.8925577Z             {
2026-06-20T11:21:58.8925712Z               "path": "crates/spt-live/src/resume.rs",
2026-06-20T11:21:58.8925821Z               "line": 19
2026-06-20T11:21:58.8925935Z             }
2026-06-20T11:21:58.8926055Z           ]
2026-06-20T11:21:58.8926164Z         },
2026-06-20T11:21:58.8926279Z         "int": {
2026-06-20T11:21:58.8926398Z           "complete": false,
2026-06-20T11:21:58.8926516Z           "evidence": []
2026-06-20T11:21:58.8926635Z         },
2026-06-20T11:21:58.8926739Z         "unit": {
2026-06-20T11:21:58.8926856Z           "complete": true,
2026-06-20T11:21:58.8926966Z           "evidence": [
2026-06-20T11:21:58.8927086Z             {
2026-06-20T11:21:58.8927214Z               "path": "crates/spt-live/src/resume.rs",
2026-06-20T11:21:58.8927334Z               "line": 201
2026-06-20T11:21:58.8927447Z             },
2026-06-20T11:21:58.8927558Z             {
2026-06-20T11:21:58.8927696Z               "path": "crates/spt-live/src/resume.rs",
2026-06-20T11:21:58.8927795Z               "line": 223
2026-06-20T11:21:58.8927902Z             },
2026-06-20T11:21:58.8928006Z             {
2026-06-20T11:21:58.8928139Z               "path": "crates/spt-live/src/resume.rs",
2026-06-20T11:21:58.8928264Z               "line": 244
2026-06-20T11:21:58.8928364Z             }
2026-06-20T11:21:58.8928482Z           ]
2026-06-20T11:21:58.8928589Z         }
2026-06-20T11:21:58.8928692Z       }
2026-06-20T11:21:58.8928802Z     },
2026-06-20T11:21:58.8928918Z     {
2026-06-20T11:21:58.8929127Z       "id": "REQ-SEAM-SPAWN",
2026-06-20T11:21:58.8929251Z       "title": "spawn-session seam",
2026-06-20T11:21:58.8929378Z       "requiredStages": [
2026-06-20T11:21:58.8929492Z         "impl",
2026-06-20T11:21:58.8929610Z         "unit"
2026-06-20T11:21:58.8929719Z       ],
2026-06-20T11:21:58.8929834Z       "stages": {
2026-06-20T11:21:58.8929948Z         "doc": {
2026-06-20T11:21:58.8930071Z           "complete": false,
2026-06-20T11:21:58.8930187Z           "evidence": []
2026-06-20T11:21:58.8930296Z         },
2026-06-20T11:21:58.8930420Z         "impl": {
2026-06-20T11:21:58.8930544Z           "complete": true,
2026-06-20T11:21:58.8930667Z           "evidence": [
2026-06-20T11:21:58.8930882Z             {
2026-06-20T11:21:58.8931030Z               "path": "crates/spt-runtime/src/runtime.rs",
2026-06-20T11:21:58.8931136Z               "line": 20
2026-06-20T11:21:58.8931249Z             }
2026-06-20T11:21:58.8931364Z           ]
2026-06-20T11:21:58.8931465Z         },
2026-06-20T11:21:58.8931578Z         "int": {
2026-06-20T11:21:58.8931694Z           "complete": false,
2026-06-20T11:21:58.8931813Z           "evidence": []
2026-06-20T11:21:58.8931926Z         },
2026-06-20T11:21:58.8932026Z         "unit": {
2026-06-20T11:21:58.8932149Z           "complete": true,
2026-06-20T11:21:58.8932257Z           "evidence": [
2026-06-20T11:21:58.8932367Z             {
2026-06-20T11:21:58.8932614Z               "path": "crates/spt-runtime/src/runtime.rs",
2026-06-20T11:21:58.8932725Z               "line": 608
2026-06-20T11:21:58.8932844Z             },
2026-06-20T11:21:58.8932953Z             {
2026-06-20T11:21:58.8933092Z               "path": "crates/spt-runtime/src/runtime.rs",
2026-06-20T11:21:58.8933206Z               "line": 615
2026-06-20T11:21:58.8933321Z             },
2026-06-20T11:21:58.8933430Z             {
2026-06-20T11:21:58.8933563Z               "path": "crates/spt-runtime/src/runtime.rs",
2026-06-20T11:21:58.8933679Z               "line": 721
2026-06-20T11:21:58.8933788Z             },
2026-06-20T11:21:58.8933907Z             {
2026-06-20T11:21:58.8934050Z               "path": "crates/spt-runtime/src/runtime.rs",
2026-06-20T11:21:58.8934160Z               "line": 727
2026-06-20T11:21:58.8934265Z             },
2026-06-20T11:21:58.8934370Z             {
2026-06-20T11:21:58.8934513Z               "path": "crates/spt-runtime/src/runtime.rs",
2026-06-20T11:21:58.8934624Z               "line": 752
2026-06-20T11:21:58.8934741Z             },
2026-06-20T11:21:58.8934845Z             {
2026-06-20T11:21:58.8934994Z               "path": "crates/spt-runtime/src/runtime.rs",
2026-06-20T11:21:58.8935093Z               "line": 789
2026-06-20T11:21:58.8935208Z             }
2026-06-20T11:21:58.8935337Z           ]
2026-06-20T11:21:58.8935441Z         }
2026-06-20T11:21:58.8935551Z       }
2026-06-20T11:21:58.8935647Z     },
2026-06-20T11:21:58.8935756Z     {
2026-06-20T11:21:58.8935885Z       "id": "REQ-SEAM-UPDATE",
2026-06-20T11:21:58.8936057Z       "title": "Adapter-update avenue (file-pull / delegated command)",
2026-06-20T11:21:58.8936180Z       "requiredStages": [
2026-06-20T11:21:58.8936291Z         "impl",
2026-06-20T11:21:58.8936405Z         "unit"
2026-06-20T11:21:58.8936505Z       ],
2026-06-20T11:21:58.8936615Z       "stages": {
2026-06-20T11:21:58.8936734Z         "doc": {
2026-06-20T11:21:58.8936844Z           "complete": false,
2026-06-20T11:21:58.8936972Z           "evidence": []
2026-06-20T11:21:58.8937076Z         },
2026-06-20T11:21:58.8937195Z         "impl": {
2026-06-20T11:21:58.8937313Z           "complete": true,
2026-06-20T11:21:58.8937436Z           "evidence": [
2026-06-20T11:21:58.8937551Z             {
2026-06-20T11:21:58.8937688Z               "path": "crates/spt-daemon/src/adapter_update.rs",
2026-06-20T11:21:58.8937813Z               "line": 28
2026-06-20T11:21:58.8937927Z             },
2026-06-20T11:21:58.8938036Z             {
2026-06-20T11:21:58.8938190Z               "path": "crates/spt-daemon/src/adapter_update.rs",
2026-06-20T11:21:58.8938304Z               "line": 88
2026-06-20T11:21:58.8938404Z             }
2026-06-20T11:21:58.8938514Z           ]
2026-06-20T11:21:58.8938633Z         },
2026-06-20T11:21:58.8938747Z         "int": {
2026-06-20T11:21:58.8938867Z           "complete": false,
2026-06-20T11:21:58.8939048Z           "evidence": []
2026-06-20T11:21:58.8939154Z         },
2026-06-20T11:21:58.8941881Z         "unit": {
2026-06-20T11:21:58.8942026Z           "complete": true,
2026-06-20T11:21:58.8942153Z           "evidence": [
2026-06-20T11:21:58.8942269Z             {
2026-06-20T11:21:58.8942438Z               "path": "crates/spt-daemon/src/adapter_update.rs",
2026-06-20T11:21:58.8942561Z               "line": 326
2026-06-20T11:21:58.8942677Z             },
2026-06-20T11:21:58.8942931Z             {
2026-06-20T11:21:58.8943089Z               "path": "crates/spt-daemon/src/adapter_update.rs",
2026-06-20T11:21:58.8943198Z               "line": 337
2026-06-20T11:21:58.8943304Z             }
2026-06-20T11:21:58.8943413Z           ]
2026-06-20T11:21:58.8943513Z         }
2026-06-20T11:21:58.8943633Z       }
2026-06-20T11:21:58.8943733Z     },
2026-06-20T11:21:58.8943847Z     {
2026-06-20T11:21:58.8943966Z       "id": "REQ-SEC-1",
2026-06-20T11:21:58.8944381Z       "title": "Per-endpoint access whitelist: origin-node gate, stateful-firewall (reply/outbound exempt), node-now/user-later, outer gate before grants",
2026-06-20T11:21:58.8944596Z       "requiredStages": [
2026-06-20T11:21:58.8944710Z         "impl",
2026-06-20T11:21:58.8944811Z         "unit"
2026-06-20T11:21:58.8944925Z       ],
2026-06-20T11:21:58.8945039Z       "stages": {
2026-06-20T11:21:58.8945141Z         "doc": {
2026-06-20T11:21:58.8945254Z           "complete": false,
2026-06-20T11:21:58.8945381Z           "evidence": []
2026-06-20T11:21:58.8945486Z         },
2026-06-20T11:21:58.8945597Z         "impl": {
2026-06-20T11:21:58.8945720Z           "complete": true,
2026-06-20T11:21:58.8945830Z           "evidence": [
2026-06-20T11:21:58.8945935Z             {
2026-06-20T11:21:58.8946082Z               "path": "crates/spt-daemon/src/access.rs",
2026-06-20T11:21:58.8946207Z               "line": 86
2026-06-20T11:21:58.8946330Z             },
2026-06-20T11:21:58.8946440Z             {
2026-06-20T11:21:58.8946588Z               "path": "crates/spt-daemon/src/access.rs",
2026-06-20T11:21:58.8946697Z               "line": 116
2026-06-20T11:21:58.8946813Z             },
2026-06-20T11:21:58.8946926Z             {
2026-06-20T11:21:58.8947075Z               "path": "crates/spt-daemon/src/access.rs",
2026-06-20T11:21:58.8947185Z               "line": 130
2026-06-20T11:21:58.8947289Z             },
2026-06-20T11:21:58.8947399Z             {
2026-06-20T11:21:58.8947541Z               "path": "crates/spt-store/src/access.rs",
2026-06-20T11:21:58.8947660Z               "line": 109
2026-06-20T11:21:58.8947760Z             },
2026-06-20T11:21:58.8947868Z             {
2026-06-20T11:21:58.8948000Z               "path": "crates/spt-store/src/access.rs",
2026-06-20T11:21:58.8948106Z               "line": 130
2026-06-20T11:21:58.8948220Z             },
2026-06-20T11:21:58.8948330Z             {
2026-06-20T11:21:58.8948473Z               "path": "crates/spt-store/src/access.rs",
2026-06-20T11:21:58.8948582Z               "line": 143
2026-06-20T11:21:58.8948688Z             },
2026-06-20T11:21:58.8948793Z             {
2026-06-20T11:21:58.8948925Z               "path": "crates/spt-store/src/access.rs",
2026-06-20T11:21:58.8949145Z               "line": 209
2026-06-20T11:21:58.8949244Z             },
2026-06-20T11:21:58.8949365Z             {
2026-06-20T11:21:58.8949498Z               "path": "crates/spt-store/src/access.rs",
2026-06-20T11:21:58.8949603Z               "line": 235
2026-06-20T11:21:58.8949709Z             },
2026-06-20T11:21:58.8949822Z             {
2026-06-20T11:21:58.8949962Z               "path": "crates/spt/src/cli.rs",
2026-06-20T11:21:58.8950066Z               "line": 5295
2026-06-20T11:21:58.8950185Z             }
2026-06-20T11:21:58.8950296Z           ]
2026-06-20T11:21:58.8950409Z         },
2026-06-20T11:21:58.8950522Z         "int": {
2026-06-20T11:21:58.8950632Z           "complete": false,
2026-06-20T11:21:58.8950754Z           "evidence": []
2026-06-20T11:21:58.8950863Z         },
2026-06-20T11:21:58.8950968Z         "unit": {
2026-06-20T11:21:58.8951074Z           "complete": true,
2026-06-20T11:21:58.8951201Z           "evidence": [
2026-06-20T11:21:58.8951322Z             {
2026-06-20T11:21:58.8951468Z               "path": "crates/spt-daemon/src/access.rs",
2026-06-20T11:21:58.8951584Z               "line": 142
2026-06-20T11:21:58.8951693Z             },
2026-06-20T11:21:58.8951797Z             {
2026-06-20T11:21:58.8951932Z               "path": "crates/spt-daemon/src/access.rs",
2026-06-20T11:21:58.8952160Z               "line": 194
2026-06-20T11:21:58.8952275Z             },
2026-06-20T11:21:58.8952364Z             {
2026-06-20T11:21:58.8952499Z               "path": "crates/spt-daemon/src/access.rs",
2026-06-20T11:21:58.8952605Z               "line": 235
2026-06-20T11:21:58.8952713Z             },
2026-06-20T11:21:58.8952824Z             {
2026-06-20T11:21:58.8952971Z               "path": "crates/spt-daemon/tests/access.rs",
2026-06-20T11:21:58.8953089Z               "line": 140
2026-06-20T11:21:58.8953184Z             },
2026-06-20T11:21:58.8953302Z             {
2026-06-20T11:21:58.8953429Z               "path": "crates/spt-store/src/access.rs",
2026-06-20T11:21:58.8953645Z               "line": 247
2026-06-20T11:21:58.8953753Z             },
2026-06-20T11:21:58.8953851Z             {
2026-06-20T11:21:58.8953992Z               "path": "crates/spt-store/src/access.rs",
2026-06-20T11:21:58.8954112Z               "line": 277
2026-06-20T11:21:58.8954221Z             },
2026-06-20T11:21:58.8954330Z             {
2026-06-20T11:21:58.8954470Z               "path": "crates/spt-store/src/access.rs",
2026-06-20T11:21:58.8954588Z               "line": 310
2026-06-20T11:21:58.8954698Z             },
2026-06-20T11:21:58.8954809Z             {
2026-06-20T11:21:58.8954941Z               "path": "crates/spt-store/src/access.rs",
2026-06-20T11:21:58.8955051Z               "line": 329
2026-06-20T11:21:58.8955157Z             },
2026-06-20T11:21:58.8955270Z             {
2026-06-20T11:21:58.8955414Z               "path": "crates/spt-store/src/access.rs",
2026-06-20T11:21:58.8955523Z               "line": 362
2026-06-20T11:21:58.8955633Z             },
2026-06-20T11:21:58.8955739Z             {
2026-06-20T11:21:58.8955884Z               "path": "crates/spt-store/src/access.rs",
2026-06-20T11:21:58.8955989Z               "line": 386
2026-06-20T11:21:58.8956099Z             },
2026-06-20T11:21:58.8956213Z             {
2026-06-20T11:21:58.8956332Z               "path": "crates/spt/src/cli.rs",
2026-06-20T11:21:58.8956457Z               "line": 8296
2026-06-20T11:21:58.8956561Z             }
2026-06-20T11:21:58.8956676Z           ]
2026-06-20T11:21:58.8956786Z         }
2026-06-20T11:21:58.8956900Z       }
2026-06-20T11:21:58.8957015Z     },
2026-06-20T11:21:58.8957115Z     {
2026-06-20T11:21:58.8957248Z       "id": "REQ-SEND-SPT-HOSTED",
2026-06-20T11:21:58.8961063Z       "title": "An inbound `spt send` is DELIVERED to an spt-hosted endpoint (brought up via `spt endpoint run` → `api bind`, broker holds its PTY, NO `api listen` relay). Today cmd_bind→establish_perch (api/startup.rs ~441) writes info.json + ready marker + controllable=Some(true) but registers NO message-listener / NO address, so deliver.rs resolve_address→None→spool (deliver.rs:132-140) and the message NEVER reaches the live PTY — the endpoint reads 'online' (ready marker) yet `spt send` silently SPOOLS ('online but not deliverable' lie). Per CONTEXT:187-188 the daemon owns the PTY and delivers, manifest-configurable per activity-state (direct PTY injection / relay / HTTP). FIX: route an inbound send for an spt-hosted target through the daemon → broker InputReq → session.write_input PTY-inject (broker.rs dispatch_input/write_input ~988-1022), the same path the brain uses; the live-delivery handshake must report Sent (not Queued) and stop the spool-only fallback for a broker-hosted, PTY-resident endpoint. Detection is local: controllable==Some(true) + spt-hosted state + resolve_address==None. = the spt-core HALF of the wall-b finding (perri owns the adapter half: bind-hook fired-zero-perch + the missing endpoint-run int test). (post-v0.10.0)",
2026-06-20T11:21:58.8961201Z       "requiredStages": [
2026-06-20T11:21:58.8961323Z         "impl",
2026-06-20T11:21:58.8961432Z         "unit",
2026-06-20T11:21:58.8961543Z         "int"
2026-06-20T11:21:58.8961643Z       ],
2026-06-20T11:21:58.8961752Z       "stages": {
2026-06-20T11:21:58.8961863Z         "doc": {
2026-06-20T11:21:58.8961977Z           "complete": false,
2026-06-20T11:21:58.8962100Z           "evidence": []
2026-06-20T11:21:58.8962310Z         },
2026-06-20T11:21:58.8962420Z         "impl": {
2026-06-20T11:21:58.8962544Z           "complete": true,
2026-06-20T11:21:58.8962658Z           "evidence": [
2026-06-20T11:21:58.8962769Z             {
2026-06-20T11:21:58.8962915Z               "path": "crates/spt-daemon/src/brain.rs",
2026-06-20T11:21:58.8963025Z               "line": 1045
2026-06-20T11:21:58.8963131Z             },
2026-06-20T11:21:58.8963249Z             {
2026-06-20T11:21:58.8963394Z               "path": "crates/spt-daemon/src/broker.rs",
2026-06-20T11:21:58.8963508Z               "line": 1685
2026-06-20T11:21:58.8963616Z             },
2026-06-20T11:21:58.8963853Z             {
2026-06-20T11:21:58.8963985Z               "path": "crates/spt/src/cli.rs",
2026-06-20T11:21:58.8964095Z               "line": 2850
2026-06-20T11:21:58.8964210Z             }
2026-06-20T11:21:58.8964333Z           ]
2026-06-20T11:21:58.8964448Z         },
2026-06-20T11:21:58.8964571Z         "int": {
2026-06-20T11:21:58.8964682Z           "complete": true,
2026-06-20T11:21:58.8964805Z           "evidence": [
2026-06-20T11:21:58.8964924Z             {
2026-06-20T11:21:58.8965069Z               "path": "crates/spt-daemon/tests/broker.rs",
2026-06-20T11:21:58.8965182Z               "line": 189
2026-06-20T11:21:58.8965291Z             },
2026-06-20T11:21:58.8965407Z             {
2026-06-20T11:21:58.8965544Z               "path": "crates/spt-daemon/tests/broker.rs",
2026-06-20T11:21:58.8965665Z               "line": 507
2026-06-20T11:21:58.8965778Z             }
2026-06-20T11:21:58.8965883Z           ]
2026-06-20T11:21:58.8966004Z         },
2026-06-20T11:21:58.8966121Z         "unit": {
2026-06-20T11:21:58.8966246Z           "complete": true,
2026-06-20T11:21:58.8966366Z           "evidence": [
2026-06-20T11:21:58.8966483Z             {
2026-06-20T11:21:58.8966621Z               "path": "crates/spt-daemon/src/msg.rs",
2026-06-20T11:21:58.8966732Z               "line": 952
2026-06-20T11:21:58.8966831Z             },
2026-06-20T11:21:58.8966941Z             {
2026-06-20T11:21:58.8967065Z               "path": "crates/spt/src/cli.rs",
2026-06-20T11:21:58.8967183Z               "line": 7486
2026-06-20T11:21:58.8967304Z             }
2026-06-20T11:21:58.8967417Z           ]
2026-06-20T11:21:58.8967527Z         }
2026-06-20T11:21:58.8967646Z       }
2026-06-20T11:21:58.8967751Z     },
2026-06-20T11:21:58.8967866Z     {
2026-06-20T11:21:58.8968004Z       "id": "REQ-SESSION-RESUME-TEMPLATE",
2026-06-20T11:21:58.8975009Z       "title": "Resuming an endpoint session that HAS conversation history brings up a BLANK session. ROOT (doyle, code-grounded + CONTEXT — case-3 spt-core MISSING feature, NOT a perri docs-miss): CONTEXT L127-129 already defines the resume-session seam ('continue-existing: resume an existing harness session under the adapter — its NATIVE resume'), and the manifest already has the resume-variant pattern (Session has BOTH psyche_init AND psyche_resume, manifest.rs:217-219) — but the agent's own session has ONLY self_ (`[session.self]`, no resume sibling). cmd_endpoint_run (cli.rs:1304) re-passes the session_id through `[session.self]` on resume (resume.unwrap_or_else(mint_session_id)), so the adapter's FRESH command (e.g. `claude --session-id ..`) runs again instead of the harness NATIVE resume (`claude -r ..`) -> CC starts a fresh transcript -> blank. spt-core forwards session_id + cwd faithfully; it just has no way to express the native-resume invocation. SECOND GAP: CC resolves a transcript by session_id + cwd, but the session ledger records only {ts, session_id, trigger} (no cwd), so picker Resume-from-history (cross-project rows) can't restore the right cwd. FIX (doyle design, V0.13.0-P2-SESSION-RESUME-DESIGN.md, mirrors psyche_init->psyche_resume exactly): (A) add a `[session.resume]` role (resume: Option<SessionRole> on Session + roles()/is_empty()); cmd_endpoint_run selects it when --resume is set AND it's declared (fill {id}/{session_id}=resumed id/{session_name} + the resume cwd), else FALL BACK to `[session.self]` (full back-compat). (B) record cwd PER ledger row (operator ruling): {ts, session_id, trigger, cwd} additive serde-default; resume cwd = resumed row cwd -> else perch info.cwd -> else current_dir (back-compat for old rows + single-project endpoints); picker threads the selected row's cwd through Outcome::Run -> cmd_endpoint_run. (C) public docs (MANIFEST + harness-contract) teach `[session.resume]` so perri builds the adapter side BLIND. Adapter follow-on (perri, AFTER spt-core ships+docs): declare `[session.resume] command = claude -r {session_id} --remote-control {id} --dangerously-skip-permissions` from the resume cwd. Completes REQ-READY-AGENT-RESUME / REQ-RUN-PICKER resume-from-history. (v0.13.0)",
2026-06-20T11:21:58.8975361Z       "requiredStages": [
2026-06-20T11:21:58.8975484Z         "doc",
2026-06-20T11:21:58.8975590Z         "impl",
2026-06-20T11:21:58.8975704Z         "unit",
2026-06-20T11:21:58.8975813Z         "int"
2026-06-20T11:21:58.8975924Z       ],
2026-06-20T11:21:58.8976048Z       "stages": {
2026-06-20T11:21:58.8976157Z         "doc": {
2026-06-20T11:21:58.8976282Z           "complete": true,
2026-06-20T11:21:58.8976410Z           "evidence": [
2026-06-20T11:21:58.8976530Z             {
2026-06-20T11:21:58.8976700Z               "path": "docs-site/src/harness-contract/manifest.md",
2026-06-20T11:21:58.8976821Z               "line": 130
2026-06-20T11:21:58.8976935Z             },
2026-06-20T11:21:58.8977043Z             {
2026-06-20T11:21:58.8977167Z               "path": "docs/MANIFEST.md",
2026-06-20T11:21:58.8977278Z               "line": 96
2026-06-20T11:21:58.8977391Z             }
2026-06-20T11:21:58.8977501Z           ]
2026-06-20T11:21:58.8977611Z         },
2026-06-20T11:21:58.8977729Z         "impl": {
2026-06-20T11:21:58.8977850Z           "complete": true,
2026-06-20T11:21:58.8977964Z           "evidence": [
2026-06-20T11:21:58.8978073Z             {
2026-06-20T11:21:58.8978230Z               "path": "crates/spt-daemon/src/harnesshost.rs",
2026-06-20T11:21:58.8978349Z               "line": 77
2026-06-20T11:21:58.8978460Z             },
2026-06-20T11:21:58.8978564Z             {
2026-06-20T11:21:58.8978707Z               "path": "crates/spt-daemon/src/harnesshost.rs",
2026-06-20T11:21:58.8978818Z               "line": 183
2026-06-20T11:21:58.8978916Z             },
2026-06-20T11:21:58.8979133Z             {
2026-06-20T11:21:58.8979278Z               "path": "crates/spt-runtime/src/manifest.rs",
2026-06-20T11:21:58.8979393Z               "line": 222
2026-06-20T11:21:58.8979506Z             },
2026-06-20T11:21:58.8979610Z             {
2026-06-20T11:21:58.8979758Z               "path": "crates/spt-store/src/sessions.rs",
2026-06-20T11:21:58.8979863Z               "line": 71
2026-06-20T11:21:58.8979990Z             },
2026-06-20T11:21:58.8980106Z             {
2026-06-20T11:21:58.8980239Z               "path": "crates/spt/src/picker/model.rs",
2026-06-20T11:21:58.8980349Z               "line": 176
2026-06-20T11:21:58.8980454Z             }
2026-06-20T11:21:58.8980558Z           ]
2026-06-20T11:21:58.8980669Z         },
2026-06-20T11:21:58.8980778Z         "int": {
2026-06-20T11:21:58.8980897Z           "complete": true,
2026-06-20T11:21:58.8981007Z           "evidence": [
2026-06-20T11:21:58.8981126Z             {
2026-06-20T11:21:58.8981268Z               "path": "crates/spt/tests/resume_template_e2e.rs",
2026-06-20T11:21:58.8981384Z               "line": 25
2026-06-20T11:21:58.8981493Z             }
2026-06-20T11:21:58.8981598Z           ]
2026-06-20T11:21:58.8981713Z         },
2026-06-20T11:21:58.8981827Z         "unit": {
2026-06-20T11:21:58.8981947Z           "complete": true,
2026-06-20T11:21:58.8982061Z           "evidence": [
2026-06-20T11:21:58.8982183Z             {
2026-06-20T11:21:58.8982336Z               "path": "crates/spt-daemon/src/harnesshost.rs",
2026-06-20T11:21:58.8982453Z               "line": 341
2026-06-20T11:21:58.8982572Z             },
2026-06-20T11:21:58.8982683Z             {
2026-06-20T11:21:58.8982829Z               "path": "crates/spt-daemon/src/harnesshost.rs",
2026-06-20T11:21:58.8983059Z               "line": 391
2026-06-20T11:21:58.8983163Z             },
2026-06-20T11:21:58.8983274Z             {
2026-06-20T11:21:58.8983430Z               "path": "crates/spt-runtime/src/manifest.rs",
2026-06-20T11:21:58.8983554Z               "line": 1244
2026-06-20T11:21:58.8983655Z             },
2026-06-20T11:21:58.8983764Z             {
2026-06-20T11:21:58.8983904Z               "path": "crates/spt-store/src/sessions.rs",
2026-06-20T11:21:58.8984022Z               "line": 184
2026-06-20T11:21:58.8984136Z             },
2026-06-20T11:21:58.8984251Z             {
2026-06-20T11:21:58.8984398Z               "path": "crates/spt-store/src/sessions.rs",
2026-06-20T11:21:58.8984609Z               "line": 208
2026-06-20T11:21:58.8984740Z             },
2026-06-20T11:21:58.8984850Z             {
2026-06-20T11:21:58.8984996Z               "path": "crates/spt-store/src/sessions.rs",
2026-06-20T11:21:58.8985105Z               "line": 236
2026-06-20T11:21:58.8985220Z             },
2026-06-20T11:21:58.8985335Z             {
2026-06-20T11:21:58.8985467Z               "path": "crates/spt/src/picker/model.rs",
2026-06-20T11:21:58.8985592Z               "line": 945
2026-06-20T11:21:58.8985692Z             }
2026-06-20T11:21:58.8985807Z           ]
2026-06-20T11:21:58.8985921Z         }
2026-06-20T11:21:58.8986039Z       }
2026-06-20T11:21:58.8986155Z     },
2026-06-20T11:21:58.8986259Z     {
2026-06-20T11:21:58.8986383Z       "id": "REQ-SHELL-1",
2026-06-20T11:21:58.8987275Z       "title": "Shell hosting machinery: shell perch under the owner (type/owner/adapter_name/status/alias), broker-launched binary + api bind local-link handshake, the three channels (command durable, text+file durable + progress-queryable, sensory REST-only never spooled + dropped-unless-owner-live), owner exclusivity (CONTEXT Shell model)",
2026-06-20T11:21:58.8987405Z       "requiredStages": [
2026-06-20T11:21:58.8987509Z         "impl",
2026-06-20T11:21:58.8987617Z         "unit",
2026-06-20T11:21:58.8987737Z         "int"
2026-06-20T11:21:58.8987852Z       ],
2026-06-20T11:21:58.8987960Z       "stages": {
2026-06-20T11:21:58.8988066Z         "doc": {
2026-06-20T11:21:58.8988176Z           "complete": false,
2026-06-20T11:21:58.8988304Z           "evidence": []
2026-06-20T11:21:58.8988410Z         },
2026-06-20T11:21:58.8988524Z         "impl": {
2026-06-20T11:21:58.8988642Z           "complete": true,
2026-06-20T11:21:58.8988767Z           "evidence": [
2026-06-20T11:21:58.8988872Z             {
2026-06-20T11:21:58.8989129Z               "path": "crates/spt-daemon/src/linkhost.rs",
2026-06-20T11:21:58.8989238Z               "line": 189
2026-06-20T11:21:58.8989349Z             },
2026-06-20T11:21:58.8989476Z             {
2026-06-20T11:21:58.8989620Z               "path": "crates/spt-daemon/src/linkhost.rs",
2026-06-20T11:21:58.8989740Z               "line": 268
2026-06-20T11:21:58.8989848Z             },
2026-06-20T11:21:58.8989962Z             {
2026-06-20T11:21:58.8990113Z               "path": "crates/spt-daemon/src/shellchan.rs",
2026-06-20T11:21:58.8990226Z               "line": 27
2026-06-20T11:21:58.8990342Z             },
2026-06-20T11:21:58.8990456Z             {
2026-06-20T11:21:58.8990608Z               "path": "crates/spt-daemon/src/shellchan.rs",
2026-06-20T11:21:58.8990728Z               "line": 52
2026-06-20T11:21:58.8990842Z             },
2026-06-20T11:21:58.8990953Z             {
2026-06-20T11:21:58.8991086Z               "path": "crates/spt-daemon/src/shellchan.rs",
2026-06-20T11:21:58.8991199Z               "line": 144
2026-06-20T11:21:58.8991306Z             },
2026-06-20T11:21:58.8991424Z             {
2026-06-20T11:21:58.8991572Z               "path": "crates/spt-daemon/src/shellchan.rs",
2026-06-20T11:21:58.8991695Z               "line": 176
2026-06-20T11:21:58.8991805Z             },
2026-06-20T11:21:58.8991911Z             {
2026-06-20T11:21:58.8992058Z               "path": "crates/spt-daemon/src/shellhost.rs",
2026-06-20T11:21:58.8992168Z               "line": 22
2026-06-20T11:21:58.8992274Z             },
2026-06-20T11:21:58.8992503Z             {
2026-06-20T11:21:58.8992649Z               "path": "crates/spt-daemon/src/shellhost.rs",
2026-06-20T11:21:58.8992767Z               "line": 65
2026-06-20T11:21:58.8992868Z             },
2026-06-20T11:21:58.8992989Z             {
2026-06-20T11:21:58.8993132Z               "path": "crates/spt-daemon/src/shellhost.rs",
2026-06-20T11:21:58.8993257Z               "line": 76
2026-06-20T11:21:58.8993361Z             },
2026-06-20T11:21:58.8993471Z             {
2026-06-20T11:21:58.8993610Z               "path": "crates/spt-daemon/src/shellhost.rs",
2026-06-20T11:21:58.8993723Z               "line": 151
2026-06-20T11:21:58.8993844Z             },
2026-06-20T11:21:58.8994052Z             {
2026-06-20T11:21:58.8994210Z               "path": "crates/spt-daemon/src/shellhost.rs",
2026-06-20T11:21:58.8994329Z               "line": 210
2026-06-20T11:21:58.8994439Z             },
2026-06-20T11:21:58.8994567Z             {
2026-06-20T11:21:58.8994701Z               "path": "crates/spt-daemon/src/shellhost.rs",
2026-06-20T11:21:58.8994821Z               "line": 259
2026-06-20T11:21:58.8994934Z             },
2026-06-20T11:21:58.8995060Z             {
2026-06-20T11:21:58.8995197Z               "path": "crates/spt-daemon/src/shellhost.rs",
2026-06-20T11:21:58.8995305Z               "line": 281
2026-06-20T11:21:58.8995415Z             },
2026-06-20T11:21:58.8995524Z             {
2026-06-20T11:21:58.8995679Z               "path": "crates/spt-daemon/src/shellhost.rs",
2026-06-20T11:21:58.8995785Z               "line": 294
2026-06-20T11:21:58.8995895Z             },
2026-06-20T11:21:58.8996009Z             {
2026-06-20T11:21:58.8996148Z               "path": "crates/spt-store/src/perch.rs",
2026-06-20T11:21:58.8996266Z               "line": 217
2026-06-20T11:21:58.8996372Z             },
2026-06-20T11:21:58.8996482Z             {
2026-06-20T11:21:58.8996614Z               "path": "crates/spt-store/src/perch.rs",
2026-06-20T11:21:58.8996729Z               "line": 233
2026-06-20T11:21:58.8996843Z             },
2026-06-20T11:21:58.8996963Z             {
2026-06-20T11:21:58.8997111Z               "path": "crates/spt-store/src/shellinfo.rs",
2026-06-20T11:21:58.8997230Z               "line": 41
2026-06-20T11:21:58.8997345Z             },
2026-06-20T11:21:58.8997454Z             {
2026-06-20T11:21:58.8997597Z               "path": "crates/spt-store/src/shellinfo.rs",
2026-06-20T11:21:58.8997712Z               "line": 222
2026-06-20T11:21:58.8997825Z             },
2026-06-20T11:21:58.8997936Z             {
2026-06-20T11:21:58.8998069Z               "path": "crates/spt/src/api/delivery.rs",
2026-06-20T11:21:58.8998177Z               "line": 173
2026-06-20T11:21:58.8998292Z             },
2026-06-20T11:21:58.8998408Z             {
2026-06-20T11:21:58.8998535Z               "path": "crates/spt/src/api/mod.rs",
2026-06-20T11:21:58.8998645Z               "line": 354
2026-06-20T11:21:58.8998755Z             },
2026-06-20T11:21:58.8998864Z             {
2026-06-20T11:21:58.8999084Z               "path": "crates/spt/src/api/mod.rs",
2026-06-20T11:21:58.8999198Z               "line": 419
2026-06-20T11:21:58.8999308Z             },
2026-06-20T11:21:58.8999423Z             {
2026-06-20T11:21:58.8999566Z               "path": "crates/spt/src/api/reporting.rs",
2026-06-20T11:21:58.8999689Z               "line": 333
2026-06-20T11:21:58.8999798Z             },
2026-06-20T11:21:58.8999904Z             {
2026-06-20T11:21:58.9000036Z               "path": "crates/spt/src/cli.rs",
2026-06-20T11:21:58.9000152Z               "line": 6320
2026-06-20T11:21:58.9000267Z             },
2026-06-20T11:21:58.9000370Z             {
2026-06-20T11:21:58.9000503Z               "path": "crates/spt/src/cli.rs",
2026-06-20T11:21:58.9000622Z               "line": 6470
2026-06-20T11:21:58.9000725Z             },
2026-06-20T11:21:58.9000830Z             {
2026-06-20T11:21:58.9000955Z               "path": "crates/spt/src/cli.rs",
2026-06-20T11:21:58.9001068Z               "line": 6646
2026-06-20T11:21:58.9001169Z             }
2026-06-20T11:21:58.9001416Z           ]
2026-06-20T11:21:58.9001522Z         },
2026-06-20T11:21:58.9001641Z         "int": {
2026-06-20T11:21:58.9001755Z           "complete": true,
2026-06-20T11:21:58.9001875Z           "evidence": [
2026-06-20T11:21:58.9001984Z             {
2026-06-20T11:21:58.9002137Z               "path": "crates/spt-daemon/tests/dispatch.rs",
2026-06-20T11:21:58.9002251Z               "line": 713
2026-06-20T11:21:58.9002356Z             },
2026-06-20T11:21:58.9002462Z             {
2026-06-20T11:21:58.9002623Z               "path": "crates/spt-daemon/tests/shellchan.rs",
2026-06-20T11:21:58.9002728Z               "line": 8
2026-06-20T11:21:58.9002839Z             },
2026-06-20T11:21:58.9003038Z             {
2026-06-20T11:21:58.9003181Z               "path": "crates/spt-daemon/tests/shellchan.rs",
2026-06-20T11:21:58.9003290Z               "line": 49
2026-06-20T11:21:58.9003394Z             },
2026-06-20T11:21:58.9003513Z             {
2026-06-20T11:21:58.9003654Z               "path": "crates/spt-daemon/tests/twohost.rs",
2026-06-20T11:21:58.9003774Z               "line": 778
2026-06-20T11:21:58.9003888Z             },
2026-06-20T11:21:58.9004007Z             {
2026-06-20T11:21:58.9004150Z               "path": "crates/spt-daemon/tests/twohost.rs",
2026-06-20T11:21:58.9004259Z               "line": 1213
2026-06-20T11:21:58.9004375Z             },
2026-06-20T11:21:58.9004479Z             {
2026-06-20T11:21:58.9004622Z               "path": "crates/spt/tests/notify_shell_e2e.rs",
2026-06-20T11:21:58.9004738Z               "line": 17
2026-06-20T11:21:58.9004847Z             },
2026-06-20T11:21:58.9004970Z             {
2026-06-20T11:21:58.9005104Z               "path": "crates/spt/tests/shell_e2e.rs",
2026-06-20T11:21:58.9005223Z               "line": 14
2026-06-20T11:21:58.9005334Z             }
2026-06-20T11:21:58.9005447Z           ]
2026-06-20T11:21:58.9005552Z         },
2026-06-20T11:21:58.9005663Z         "unit": {
2026-06-20T11:21:58.9005790Z           "complete": true,
2026-06-20T11:21:58.9005913Z           "evidence": [
2026-06-20T11:21:58.9006032Z             {
2026-06-20T11:21:58.9006178Z               "path": "crates/spt-daemon/src/shellchan.rs",
2026-06-20T11:21:58.9006297Z               "line": 246
2026-06-20T11:21:58.9006403Z             },
2026-06-20T11:21:58.9006512Z             {
2026-06-20T11:21:58.9006655Z               "path": "crates/spt-daemon/src/shellchan.rs",
2026-06-20T11:21:58.9006774Z               "line": 279
2026-06-20T11:21:58.9006893Z             },
2026-06-20T11:21:58.9006994Z             {
2026-06-20T11:21:58.9007146Z               "path": "crates/spt-daemon/src/shellchan.rs",
2026-06-20T11:21:58.9007257Z               "line": 319
2026-06-20T11:21:58.9007370Z             },
2026-06-20T11:21:58.9007484Z             {
2026-06-20T11:21:58.9007624Z               "path": "crates/spt-daemon/src/shellhost.rs",
2026-06-20T11:21:58.9007742Z               "line": 599
2026-06-20T11:21:58.9007847Z             },
2026-06-20T11:21:58.9007953Z             {
2026-06-20T11:21:58.9008100Z               "path": "crates/spt-daemon/src/shellhost.rs",
2026-06-20T11:21:58.9008211Z               "line": 672
2026-06-20T11:21:58.9008333Z             },
2026-06-20T11:21:58.9008434Z             {
2026-06-20T11:21:58.9008577Z               "path": "crates/spt-daemon/src/shellhost.rs",
2026-06-20T11:21:58.9008685Z               "line": 816
2026-06-20T11:21:58.9008799Z             },
2026-06-20T11:21:58.9008890Z             {
2026-06-20T11:21:58.9009114Z               "path": "crates/spt-store/src/perch.rs",
2026-06-20T11:21:58.9009225Z               "line": 595
2026-06-20T11:21:58.9009320Z             },
2026-06-20T11:21:58.9009424Z             {
2026-06-20T11:21:58.9009568Z               "path": "crates/spt-store/src/shellinfo.rs",
2026-06-20T11:21:58.9009691Z               "line": 399
2026-06-20T11:21:58.9009796Z             },
2026-06-20T11:21:58.9009911Z             {
2026-06-20T11:21:58.9010043Z               "path": "crates/spt/src/cli.rs",
2026-06-20T11:21:58.9010164Z               "line": 8976
2026-06-20T11:21:58.9010377Z             },
2026-06-20T11:21:58.9010484Z             {
2026-06-20T11:21:58.9010606Z               "path": "crates/spt/src/cli.rs",
2026-06-20T11:21:58.9010712Z               "line": 9300
2026-06-20T11:21:58.9010808Z             },
2026-06-20T11:21:58.9010921Z             {
2026-06-20T11:21:58.9011049Z               "path": "crates/spt/src/cli.rs",
2026-06-20T11:21:58.9011168Z               "line": 9717
2026-06-20T11:21:58.9011280Z             }
2026-06-20T11:21:58.9011405Z           ]
2026-06-20T11:21:58.9011510Z         }
2026-06-20T11:21:58.9011628Z       }
2026-06-20T11:21:58.9011743Z     },
2026-06-20T11:21:58.9011853Z     {
2026-06-20T11:21:58.9012078Z       "id": "REQ-SHELL-2",
2026-06-20T11:21:58.9013540Z       "title": "Shell sleep/wake: link-break always closes the binary (pre-close instruction + termination timeout), ephemeral teardown vs persistent offline/relink, wake_command wake-watcher (offline-only, exit-opcode supervision, exponential backoff + give-up), state-keyed wake resolution (dormant/suspended/active-elsewhere; no-reachable refuses — spawn-anywhere branch deferred), spt shutdown owner cascade + api owner-shutdown gated by can_shutdown (CONTEXT Shell sleep/wake)",
2026-06-20T11:21:58.9013675Z       "requiredStages": [
2026-06-20T11:21:58.9013793Z         "impl",
2026-06-20T11:21:58.9013911Z         "unit",
2026-06-20T11:21:58.9014016Z         "int"
2026-06-20T11:21:58.9014124Z       ],
2026-06-20T11:21:58.9014242Z       "stages": {
2026-06-20T11:21:58.9014358Z         "doc": {
2026-06-20T11:21:58.9014472Z           "complete": false,
2026-06-20T11:21:58.9014581Z           "evidence": []
2026-06-20T11:21:58.9014687Z         },
2026-06-20T11:21:58.9014815Z         "impl": {
2026-06-20T11:21:58.9014921Z           "complete": true,
2026-06-20T11:21:58.9015039Z           "evidence": [
2026-06-20T11:21:58.9015153Z             {
2026-06-20T11:21:58.9015293Z               "path": "crates/spt-daemon/src/brainproc.rs",
2026-06-20T11:21:58.9015412Z               "line": 217
2026-06-20T11:21:58.9015520Z             },
2026-06-20T11:21:58.9015627Z             {
2026-06-20T11:21:58.9015768Z               "path": "crates/spt-daemon/src/dispatch.rs",
2026-06-20T11:21:58.9015889Z               "line": 403
2026-06-20T11:21:58.9015993Z             },
2026-06-20T11:21:58.9016103Z             {
2026-06-20T11:21:58.9016252Z               "path": "crates/spt-daemon/src/grants.rs",
2026-06-20T11:21:58.9016369Z               "line": 250
2026-06-20T11:21:58.9016487Z             },
2026-06-20T11:21:58.9016597Z             {
2026-06-20T11:21:58.9016748Z               "path": "crates/spt-daemon/src/lifecycle.rs",
2026-06-20T11:21:58.9016867Z               "line": 403
2026-06-20T11:21:58.9016977Z             },
2026-06-20T11:21:58.9017086Z             {
2026-06-20T11:21:58.9017230Z               "path": "crates/spt-daemon/src/linkhost.rs",
2026-06-20T11:21:58.9017339Z               "line": 30
2026-06-20T11:21:58.9017448Z             },
2026-06-20T11:21:58.9017568Z             {
2026-06-20T11:21:58.9017720Z               "path": "crates/spt-daemon/src/linkhost.rs",
2026-06-20T11:21:58.9017826Z               "line": 409
2026-06-20T11:21:58.9017935Z             },
2026-06-20T11:21:58.9018040Z             {
2026-06-20T11:21:58.9018184Z               "path": "crates/spt-daemon/src/linkhost.rs",
2026-06-20T11:21:58.9018288Z               "line": 445
2026-06-20T11:21:58.9018402Z             },
2026-06-20T11:21:58.9018513Z             {
2026-06-20T11:21:58.9018655Z               "path": "crates/spt-daemon/src/linkhost.rs",
2026-06-20T11:21:58.9018775Z               "line": 660
2026-06-20T11:21:58.9018879Z             },
2026-06-20T11:21:58.9019076Z             {
2026-06-20T11:21:58.9019222Z               "path": "crates/spt-daemon/src/resting.rs",
2026-06-20T11:21:58.9019345Z               "line": 348
2026-06-20T11:21:58.9019470Z             },
2026-06-20T11:21:58.9019574Z             {
2026-06-20T11:21:58.9019717Z               "path": "crates/spt-daemon/src/shellchan.rs",
2026-06-20T11:21:58.9019832Z               "line": 115
2026-06-20T11:21:58.9020067Z             },
2026-06-20T11:21:58.9020180Z             {
2026-06-20T11:21:58.9020323Z               "path": "crates/spt-daemon/src/shellhost.rs",
2026-06-20T11:21:58.9020438Z               "line": 120
2026-06-20T11:21:58.9020547Z             },
2026-06-20T11:21:58.9020652Z             {
2026-06-20T11:21:58.9020791Z               "path": "crates/spt-daemon/src/shellhost.rs",
2026-06-20T11:21:58.9020905Z               "line": 374
2026-06-20T11:21:58.9021006Z             },
2026-06-20T11:21:58.9021106Z             {
2026-06-20T11:21:58.9021248Z               "path": "crates/spt-daemon/src/shellhost.rs",
2026-06-20T11:21:58.9021453Z               "line": 500
2026-06-20T11:21:58.9021557Z             },
2026-06-20T11:21:58.9021671Z             {
2026-06-20T11:21:58.9021812Z               "path": "crates/spt-daemon/src/shellwake.rs",
2026-06-20T11:21:58.9021931Z               "line": 24
2026-06-20T11:21:58.9022037Z             },
2026-06-20T11:21:58.9022146Z             {
2026-06-20T11:21:58.9022294Z               "path": "crates/spt-daemon/src/shellwake.rs",
2026-06-20T11:21:58.9022408Z               "line": 76
2026-06-20T11:21:58.9022517Z             },
2026-06-20T11:21:58.9022623Z             {
2026-06-20T11:21:58.9022771Z               "path": "crates/spt-daemon/src/shellwake.rs",
2026-06-20T11:21:58.9022885Z               "line": 154
2026-06-20T11:21:58.9023000Z             },
2026-06-20T11:21:58.9023100Z             {
2026-06-20T11:21:58.9023248Z               "path": "crates/spt-daemon/src/shellwake.rs",
2026-06-20T11:21:58.9023352Z               "line": 177
2026-06-20T11:21:58.9023466Z             },
2026-06-20T11:21:58.9023577Z             {
2026-06-20T11:21:58.9023709Z               "path": "crates/spt-daemon/src/shellwake.rs",
2026-06-20T11:21:58.9023824Z               "line": 273
2026-06-20T11:21:58.9023930Z             },
2026-06-20T11:21:58.9024034Z             {
2026-06-20T11:21:58.9024163Z               "path": "crates/spt-daemon/src/shellwake.rs",
2026-06-20T11:21:58.9024283Z               "line": 456
2026-06-20T11:21:58.9024395Z             },
2026-06-20T11:21:58.9024505Z             {
2026-06-20T11:21:58.9024647Z               "path": "crates/spt-daemon/src/shellwake.rs",
2026-06-20T11:21:58.9024750Z               "line": 538
2026-06-20T11:21:58.9024870Z             },
2026-06-20T11:21:58.9024971Z             {
2026-06-20T11:21:58.9025122Z               "path": "crates/spt-net/src/net/shelllink.rs",
2026-06-20T11:21:58.9025238Z               "line": 27
2026-06-20T11:21:58.9025361Z             },
2026-06-20T11:21:58.9025471Z             {
2026-06-20T11:21:58.9025619Z               "path": "crates/spt-net/src/net/shelllink.rs",
2026-06-20T11:21:58.9025742Z               "line": 48
2026-06-20T11:21:58.9025858Z             },
2026-06-20T11:21:58.9025972Z             {
2026-06-20T11:21:58.9026110Z               "path": "crates/spt/src/api/reporting.rs",
2026-06-20T11:21:58.9026225Z               "line": 517
2026-06-20T11:21:58.9026338Z             },
2026-06-20T11:21:58.9026445Z             {
2026-06-20T11:21:58.9026567Z               "path": "crates/spt/src/cli.rs",
2026-06-20T11:21:58.9026682Z               "line": 1921
2026-06-20T11:21:58.9026793Z             },
2026-06-20T11:21:58.9026910Z             {
2026-06-20T11:21:58.9027033Z               "path": "crates/spt/src/cli.rs",
2026-06-20T11:21:58.9027143Z               "line": 6334
2026-06-20T11:21:58.9027241Z             },
2026-06-20T11:21:58.9027359Z             {
2026-06-20T11:21:58.9027485Z               "path": "crates/spt/src/cli.rs",
2026-06-20T11:21:58.9027594Z               "line": 6395
2026-06-20T11:21:58.9027708Z             },
2026-06-20T11:21:58.9027809Z             {
2026-06-20T11:21:58.9027951Z               "path": "crates/spt/src/cli.rs",
2026-06-20T11:21:58.9028057Z               "line": 6423
2026-06-20T11:21:58.9028171Z             },
2026-06-20T11:21:58.9028275Z             {
2026-06-20T11:21:58.9028406Z               "path": "crates/spt/src/cli.rs",
2026-06-20T11:21:58.9028524Z               "line": 6477
2026-06-20T11:21:58.9028716Z             },
2026-06-20T11:21:58.9028834Z             {
2026-06-20T11:21:58.9029030Z               "path": "crates/spt/src/cli.rs",
2026-06-20T11:21:58.9029143Z               "line": 6732
2026-06-20T11:21:58.9029263Z             },
2026-06-20T11:21:58.9029383Z             {
2026-06-20T11:21:58.9029506Z               "path": "crates/spt/src/cli.rs",
2026-06-20T11:21:58.9029627Z               "line": 6792
2026-06-20T11:21:58.9029735Z             },
2026-06-20T11:21:58.9029844Z             {
2026-06-20T11:21:58.9029982Z               "path": "crates/spt/src/wansend.rs",
2026-06-20T11:21:58.9030097Z               "line": 298
2026-06-20T11:21:58.9030311Z             },
2026-06-20T11:21:58.9030416Z             {
2026-06-20T11:21:58.9030553Z               "path": "crates/spt/src/wansend.rs",
2026-06-20T11:21:58.9030674Z               "line": 339
2026-06-20T11:21:58.9030778Z             }
2026-06-20T11:21:58.9030888Z           ]
2026-06-20T11:21:58.9030993Z         },
2026-06-20T11:21:58.9031103Z         "int": {
2026-06-20T11:21:58.9031231Z           "complete": true,
2026-06-20T11:21:58.9031337Z           "evidence": [
2026-06-20T11:21:58.9031455Z             {
2026-06-20T11:21:58.9031595Z               "path": "crates/spt-daemon/tests/dispatch.rs",
2026-06-20T11:21:58.9031708Z               "line": 706
2026-06-20T11:21:58.9031813Z             },
2026-06-20T11:21:58.9031924Z             {
2026-06-20T11:21:58.9032070Z               "path": "crates/spt-daemon/tests/twohost.rs",
2026-06-20T11:21:58.9032193Z               "line": 778
2026-06-20T11:21:58.9032312Z             },
2026-06-20T11:21:58.9032415Z             {
2026-06-20T11:21:58.9032563Z               "path": "crates/spt-daemon/tests/twohost.rs",
2026-06-20T11:21:58.9032673Z               "line": 1213
2026-06-20T11:21:58.9032782Z             },
2026-06-20T11:21:58.9032883Z             {
2026-06-20T11:21:58.9033026Z               "path": "crates/spt/tests/shell_sleepwake_e2e.rs",
2026-06-20T11:21:58.9033144Z               "line": 18
2026-06-20T11:21:58.9033260Z             }
2026-06-20T11:21:58.9033378Z           ]
2026-06-20T11:21:58.9033499Z         },
2026-06-20T11:21:58.9033608Z         "unit": {
2026-06-20T11:21:58.9033735Z           "complete": true,
2026-06-20T11:21:58.9033851Z           "evidence": [
2026-06-20T11:21:58.9033960Z             {
2026-06-20T11:21:58.9034103Z               "path": "crates/spt-daemon/src/linkhost.rs",
2026-06-20T11:21:58.9036822Z               "line": 744
2026-06-20T11:21:58.9036966Z             },
2026-06-20T11:21:58.9037086Z             {
2026-06-20T11:21:58.9037242Z               "path": "crates/spt-daemon/src/resting.rs",
2026-06-20T11:21:58.9037372Z               "line": 796
2026-06-20T11:21:58.9037489Z             },
2026-06-20T11:21:58.9037593Z             {
2026-06-20T11:21:58.9037751Z               "path": "crates/spt-daemon/src/shellhost.rs",
2026-06-20T11:21:58.9037858Z               "line": 705
2026-06-20T11:21:58.9037964Z             },
2026-06-20T11:21:58.9038084Z             {
2026-06-20T11:21:58.9038239Z               "path": "crates/spt-daemon/src/shellhost.rs",
2026-06-20T11:21:58.9038360Z               "line": 754
2026-06-20T11:21:58.9038478Z             },
2026-06-20T11:21:58.9038578Z             {
2026-06-20T11:21:58.9038726Z               "path": "crates/spt-daemon/src/shellhost.rs",
2026-06-20T11:21:58.9038835Z               "line": 778
2026-06-20T11:21:58.9039036Z             },
2026-06-20T11:21:58.9039145Z             {
2026-06-20T11:21:58.9039285Z               "path": "crates/spt-daemon/src/shellwake.rs",
2026-06-20T11:21:58.9039414Z               "line": 603
2026-06-20T11:21:58.9039513Z             },
2026-06-20T11:21:58.9039634Z             {
2026-06-20T11:21:58.9039780Z               "path": "crates/spt-daemon/src/shellwake.rs",
2026-06-20T11:21:58.9039900Z               "line": 624
2026-06-20T11:21:58.9040009Z             },
2026-06-20T11:21:58.9040123Z             {
2026-06-20T11:21:58.9040273Z               "path": "crates/spt-daemon/src/shellwake.rs",
2026-06-20T11:21:58.9040547Z               "line": 660
2026-06-20T11:21:58.9040671Z             },
2026-06-20T11:21:58.9040775Z             {
2026-06-20T11:21:58.9040924Z               "path": "crates/spt-daemon/src/shellwake.rs",
2026-06-20T11:21:58.9041037Z               "line": 714
2026-06-20T11:21:58.9041148Z             },
2026-06-20T11:21:58.9041253Z             {
2026-06-20T11:21:58.9041386Z               "path": "crates/spt-daemon/src/shellwake.rs",
2026-06-20T11:21:58.9041501Z               "line": 732
2026-06-20T11:21:58.9041610Z             },
2026-06-20T11:21:58.9041719Z             {
2026-06-20T11:21:58.9041864Z               "path": "crates/spt-daemon/src/shellwake.rs",
2026-06-20T11:21:58.9042077Z               "line": 766
2026-06-20T11:21:58.9042188Z             },
2026-06-20T11:21:58.9042287Z             {
2026-06-20T11:21:58.9042431Z               "path": "crates/spt-daemon/src/shellwake.rs",
2026-06-20T11:21:58.9042540Z               "line": 841
2026-06-20T11:21:58.9042653Z             },
2026-06-20T11:21:58.9042763Z             {
2026-06-20T11:21:58.9042914Z               "path": "crates/spt-net/src/net/shelllink.rs",
2026-06-20T11:21:58.9043017Z               "line": 85
2026-06-20T11:21:58.9043128Z             },
2026-06-20T11:21:58.9043242Z             {
2026-06-20T11:21:58.9043376Z               "path": "crates/spt/src/cli.rs",
2026-06-20T11:21:58.9043496Z               "line": 8044
2026-06-20T11:21:58.9043600Z             },
2026-06-20T11:21:58.9043700Z             {
2026-06-20T11:21:58.9043829Z               "path": "crates/spt/src/cli.rs",
2026-06-20T11:21:58.9043933Z               "line": 9054
2026-06-20T11:21:58.9044049Z             },
2026-06-20T11:21:58.9044158Z             {
2026-06-20T11:21:58.9044282Z               "path": "crates/spt/src/cli.rs",
2026-06-20T11:21:58.9044388Z               "line": 9124
2026-06-20T11:21:58.9044496Z             },
2026-06-20T11:21:58.9044610Z             {
2026-06-20T11:21:58.9044735Z               "path": "crates/spt/src/cli.rs",
2026-06-20T11:21:58.9044849Z               "line": 9162
2026-06-20T11:21:58.9044949Z             }
2026-06-20T11:21:58.9045060Z           ]
2026-06-20T11:21:58.9045173Z         }
2026-06-20T11:21:58.9045294Z       }
2026-06-20T11:21:58.9045394Z     },
2026-06-20T11:21:58.9045502Z     {
2026-06-20T11:21:58.9045625Z       "id": "REQ-SHELL-3",
2026-06-20T11:21:58.9047502Z       "title": "Drive channel (owner->shell, REST-only, never-spooled, latest-wins): the owner->shell mirror of sensory for continuous real-time control (scroll/crank/stick/avatar) — a [shell.drive] manifest vocab + EVENT_TYPE_DRIVE frame, delivered to the ONLINE binary only via a single live slot (a new frame supersedes an undelivered one — no spool, no queue, no replay on relink), dropped-with-diagnostic if the shell is offline; cross-node rides the ephemeral link (REST class), never the durable shell spool. Commands = discrete+durable; drive = continuous+ephemeral (CONTEXT:260, minted 2026-06-11 Gateway grill).",
2026-06-20T11:21:58.9047636Z       "requiredStages": [
2026-06-20T11:21:58.9047764Z         "impl",
2026-06-20T11:21:58.9047870Z         "unit",
2026-06-20T11:21:58.9047980Z         "int"
2026-06-20T11:21:58.9048092Z       ],
2026-06-20T11:21:58.9048197Z       "stages": {
2026-06-20T11:21:58.9048315Z         "doc": {
2026-06-20T11:21:58.9048423Z           "complete": false,
2026-06-20T11:21:58.9048538Z           "evidence": []
2026-06-20T11:21:58.9048649Z         },
2026-06-20T11:21:58.9048766Z         "impl": {
2026-06-20T11:21:58.9048882Z           "complete": true,
2026-06-20T11:21:58.9049081Z           "evidence": [
2026-06-20T11:21:58.9049192Z             {
2026-06-20T11:21:58.9049344Z               "path": "crates/spt-daemon/src/daemon.rs",
2026-06-20T11:21:58.9049473Z               "line": 229
2026-06-20T11:21:58.9049578Z             },
2026-06-20T11:21:58.9049687Z             {
2026-06-20T11:21:58.9049836Z               "path": "crates/spt-daemon/src/drivehub.rs",
2026-06-20T11:21:58.9049959Z               "line": 36
2026-06-20T11:21:58.9050174Z             },
2026-06-20T11:21:58.9050277Z             {
2026-06-20T11:21:58.9050427Z               "path": "crates/spt-daemon/src/drivehub.rs",
2026-06-20T11:21:58.9050546Z               "line": 137
2026-06-20T11:21:58.9050664Z             },
2026-06-20T11:21:58.9050766Z             {
2026-06-20T11:21:58.9050912Z               "path": "crates/spt-daemon/src/drivehub.rs",
2026-06-20T11:21:58.9051035Z               "line": 153
2026-06-20T11:21:58.9051141Z             },
2026-06-20T11:21:58.9051245Z             {
2026-06-20T11:21:58.9051388Z               "path": "crates/spt-daemon/src/drivehub.rs",
2026-06-20T11:21:58.9051508Z               "line": 165
2026-06-20T11:21:58.9051708Z             },
2026-06-20T11:21:58.9051817Z             {
2026-06-20T11:21:58.9051965Z               "path": "crates/spt-daemon/src/drivehub.rs",
2026-06-20T11:21:58.9052085Z               "line": 242
2026-06-20T11:21:58.9052199Z             },
2026-06-20T11:21:58.9052299Z             {
2026-06-20T11:21:58.9052447Z               "path": "crates/spt-daemon/src/drivehub.rs",
2026-06-20T11:21:58.9052556Z               "line": 267
2026-06-20T11:21:58.9052672Z             },
2026-06-20T11:21:58.9052776Z             {
2026-06-20T11:21:58.9052914Z               "path": "crates/spt-daemon/src/drivehub.rs",
2026-06-20T11:21:58.9053035Z               "line": 293
2026-06-20T11:21:58.9053137Z             },
2026-06-20T11:21:58.9053242Z             {
2026-06-20T11:21:58.9053385Z               "path": "crates/spt-daemon/src/endpoint.rs",
2026-06-20T11:21:58.9053502Z               "line": 51
2026-06-20T11:21:58.9053606Z             },
2026-06-20T11:21:58.9053712Z             {
2026-06-20T11:21:58.9053859Z               "path": "crates/spt-daemon/src/linkhost.rs",
2026-06-20T11:21:58.9053974Z               "line": 333
2026-06-20T11:21:58.9054084Z             },
2026-06-20T11:21:58.9054198Z             {
2026-06-20T11:21:58.9054337Z               "path": "crates/spt-daemon/src/linkhost.rs",
2026-06-20T11:21:58.9054455Z               "line": 373
2026-06-20T11:21:58.9054565Z             },
2026-06-20T11:21:58.9054689Z             {
2026-06-20T11:21:58.9054827Z               "path": "crates/spt-daemon/src/linkhost.rs",
2026-06-20T11:21:58.9054948Z               "line": 602
2026-06-20T11:21:58.9055066Z             },
2026-06-20T11:21:58.9055171Z             {
2026-06-20T11:21:58.9055324Z               "path": "crates/spt-daemon/src/shellchan.rs",
2026-06-20T11:21:58.9055438Z               "line": 132
2026-06-20T11:21:58.9055553Z             },
2026-06-20T11:21:58.9055653Z             {
2026-06-20T11:21:58.9055805Z               "path": "crates/spt-daemon/src/shellhost.rs",
2026-06-20T11:21:58.9055916Z               "line": 448
2026-06-20T11:21:58.9056038Z             },
2026-06-20T11:21:58.9056142Z             {
2026-06-20T11:21:58.9056280Z               "path": "crates/spt-proto/src/event.rs",
2026-06-20T11:21:58.9056408Z               "line": 74
2026-06-20T11:21:58.9056512Z             },
2026-06-20T11:21:58.9056618Z             {
2026-06-20T11:21:58.9056764Z               "path": "crates/spt-runtime/src/manifest.rs",
2026-06-20T11:21:58.9056885Z               "line": 605
2026-06-20T11:21:58.9057004Z             },
2026-06-20T11:21:58.9057112Z             {
2026-06-20T11:21:58.9057266Z               "path": "crates/spt/src/api/reporting.rs",
2026-06-20T11:21:58.9057385Z               "line": 396
2026-06-20T11:21:58.9057500Z             },
2026-06-20T11:21:58.9057609Z             {
2026-06-20T11:21:58.9057742Z               "path": "crates/spt/src/cli.rs",
2026-06-20T11:21:58.9057867Z               "line": 6518
2026-06-20T11:21:58.9057971Z             }
2026-06-20T11:21:58.9058091Z           ]
2026-06-20T11:21:58.9058196Z         },
2026-06-20T11:21:58.9058314Z         "int": {
2026-06-20T11:21:58.9058425Z           "complete": true,
2026-06-20T11:21:58.9058549Z           "evidence": [
2026-06-20T11:21:58.9058652Z             {
2026-06-20T11:21:58.9058795Z               "path": "crates/spt-daemon/tests/twohost.rs",
2026-06-20T11:21:58.9058913Z               "line": 1262
2026-06-20T11:21:58.9059194Z             },
2026-06-20T11:21:58.9059302Z             {
2026-06-20T11:21:58.9059456Z               "path": "crates/spt/tests/drive_e2e.rs",
2026-06-20T11:21:58.9059561Z               "line": 17
2026-06-20T11:21:58.9059680Z             }
2026-06-20T11:21:58.9059781Z           ]
2026-06-20T11:21:58.9059890Z         },
2026-06-20T11:21:58.9060009Z         "unit": {
2026-06-20T11:21:58.9060133Z           "complete": true,
2026-06-20T11:21:58.9060247Z           "evidence": [
2026-06-20T11:21:58.9060362Z             {
2026-06-20T11:21:58.9060500Z               "path": "crates/spt-daemon/src/drivehub.rs",
2026-06-20T11:21:58.9060609Z               "line": 311
2026-06-20T11:21:58.9060824Z             },
2026-06-20T11:21:58.9060938Z             {
2026-06-20T11:21:58.9061083Z               "path": "crates/spt-daemon/src/drivehub.rs",
2026-06-20T11:21:58.9061206Z               "line": 325
2026-06-20T11:21:58.9061312Z             },
2026-06-20T11:21:58.9061416Z             {
2026-06-20T11:21:58.9061562Z               "path": "crates/spt-daemon/src/drivehub.rs",
2026-06-20T11:21:58.9061681Z               "line": 343
2026-06-20T11:21:58.9061797Z             },
2026-06-20T11:21:58.9061896Z             {
2026-06-20T11:21:58.9062044Z               "path": "crates/spt-daemon/src/drivehub.rs",
2026-06-20T11:21:58.9062167Z               "line": 364
2026-06-20T11:21:58.9062283Z             },
2026-06-20T11:21:58.9062383Z             {
2026-06-20T11:21:58.9062525Z               "path": "crates/spt-daemon/src/drivehub.rs",
2026-06-20T11:21:58.9062641Z               "line": 376
2026-06-20T11:21:58.9062749Z             },
2026-06-20T11:21:58.9062859Z             {
2026-06-20T11:21:58.9063008Z               "path": "crates/spt-daemon/src/linkhost.rs",
2026-06-20T11:21:58.9063131Z               "line": 897
2026-06-20T11:21:58.9063246Z             },
2026-06-20T11:21:58.9063360Z             {
2026-06-20T11:21:58.9063508Z               "path": "crates/spt-daemon/src/linkhost.rs",
2026-06-20T11:21:58.9063619Z               "line": 957
2026-06-20T11:21:58.9063726Z             },
2026-06-20T11:21:58.9063835Z             {
2026-06-20T11:21:58.9063983Z               "path": "crates/spt-daemon/src/shellchan.rs",
2026-06-20T11:21:58.9064086Z               "line": 338
2026-06-20T11:21:58.9064210Z             },
2026-06-20T11:21:58.9064321Z             {
2026-06-20T11:21:58.9064443Z               "path": "crates/spt/src/api/mod.rs",
2026-06-20T11:21:58.9064563Z               "line": 769
2026-06-20T11:21:58.9064659Z             },
2026-06-20T11:21:58.9064772Z             {
2026-06-20T11:21:58.9064898Z               "path": "crates/spt/src/cli.rs",
2026-06-20T11:21:58.9065011Z               "line": 8836
2026-06-20T11:21:58.9065130Z             }
2026-06-20T11:21:58.9065240Z           ]
2026-06-20T11:21:58.9065359Z         }
2026-06-20T11:21:58.9065459Z       }
2026-06-20T11:21:58.9065565Z     },
2026-06-20T11:21:58.9065673Z     {
2026-06-20T11:21:58.9065798Z       "id": "REQ-SHELL-4",
2026-06-20T11:21:58.9067620Z       "title": "Shell tunnel (reliable-ordered opaque byte stream): an owner<->shell link may hold a long-lived, reliable-ordered, link-bound QUIC stream pair carrying opaque wire protocol traffic the channel taxonomy must NOT reinterpret (first consumer usbip URB) — manifest opt-in, not enveloped, not MAC-framed, not spooled; the link lifecycle governs it (a link-break closes the tunnel). Reliable-ordered ⇒ congestion surfaces as lag never loss ⇒ acceptable only on-LAN: the on-LAN posture is documented and the tunnel is NOT proven cross-WAN (CONTEXT:262, minted 2026-06-11 Gateway grill; doyle gate C2).",
2026-06-20T11:21:58.9067741Z       "requiredStages": [
2026-06-20T11:21:58.9067860Z         "doc",
2026-06-20T11:21:58.9067973Z         "impl",
2026-06-20T11:21:58.9068075Z         "unit",
2026-06-20T11:21:58.9068179Z         "int"
2026-06-20T11:21:58.9068283Z       ],
2026-06-20T11:21:58.9068413Z       "stages": {
2026-06-20T11:21:58.9068517Z         "doc": {
2026-06-20T11:21:58.9068641Z           "complete": true,
2026-06-20T11:21:58.9068869Z           "evidence": [
2026-06-20T11:21:58.9069052Z             {
2026-06-20T11:21:58.9069184Z               "path": "CONTEXT.md",
2026-06-20T11:21:58.9069288Z               "line": 281
2026-06-20T11:21:58.9069407Z             },
2026-06-20T11:21:58.9069520Z             {
2026-06-20T11:21:58.9069764Z               "path": "docs/adr/0020-event-envelope-sole-arriving-format-reply-to-removed.md",
2026-06-20T11:21:58.9069877Z               "line": 88
2026-06-20T11:21:58.9069978Z             }
2026-06-20T11:21:58.9070092Z           ]
2026-06-20T11:21:58.9070196Z         },
2026-06-20T11:21:58.9070312Z         "impl": {
2026-06-20T11:21:58.9070559Z           "complete": true,
2026-06-20T11:21:58.9070684Z           "evidence": [
2026-06-20T11:21:58.9070798Z             {
2026-06-20T11:21:58.9070932Z               "path": "crates/spt-daemon/src/daemon.rs",
2026-06-20T11:21:58.9071051Z               "line": 243
2026-06-20T11:21:58.9071160Z             },
2026-06-20T11:21:58.9071266Z             {
2026-06-20T11:21:58.9071398Z               "path": "crates/spt-daemon/src/endpoint.rs",
2026-06-20T11:21:58.9071508Z               "line": 61
2026-06-20T11:21:58.9071624Z             },
2026-06-20T11:21:58.9071732Z             {
2026-06-20T11:21:58.9071877Z               "path": "crates/spt-daemon/src/linkhost.rs",
2026-06-20T11:21:58.9071986Z               "line": 218
2026-06-20T11:21:58.9072093Z             },
2026-06-20T11:21:58.9072208Z             {
2026-06-20T11:21:58.9072357Z               "path": "crates/spt-daemon/src/linkhost.rs",
2026-06-20T11:21:58.9072460Z               "line": 245
2026-06-20T11:21:58.9072571Z             },
2026-06-20T11:21:58.9072681Z             {
2026-06-20T11:21:58.9072823Z               "path": "crates/spt-daemon/src/nethost.rs",
2026-06-20T11:21:58.9072943Z               "line": 566
2026-06-20T11:21:58.9073043Z             },
2026-06-20T11:21:58.9073147Z             {
2026-06-20T11:21:58.9073300Z               "path": "crates/spt-daemon/src/nethost.rs",
2026-06-20T11:21:58.9073419Z               "line": 1141
2026-06-20T11:21:58.9073525Z             },
2026-06-20T11:21:58.9073633Z             {
2026-06-20T11:21:58.9073767Z               "path": "crates/spt-daemon/src/nethost.rs",
2026-06-20T11:21:58.9073892Z               "line": 1153
2026-06-20T11:21:58.9073996Z             },
2026-06-20T11:21:58.9074101Z             {
2026-06-20T11:21:58.9074244Z               "path": "crates/spt-daemon/src/nethost.rs",
2026-06-20T11:21:58.9074348Z               "line": 1194
2026-06-20T11:21:58.9074453Z             },
2026-06-20T11:21:58.9074566Z             {
2026-06-20T11:21:58.9074712Z               "path": "crates/spt-daemon/src/shellhost.rs",
2026-06-20T11:21:58.9074833Z               "line": 456
2026-06-20T11:21:58.9074942Z             },
2026-06-20T11:21:58.9075056Z             {
2026-06-20T11:21:58.9075204Z               "path": "crates/spt-daemon/src/tunnelhub.rs",
2026-06-20T11:21:58.9075318Z               "line": 44
2026-06-20T11:21:58.9075419Z             },
2026-06-20T11:21:58.9075533Z             {
2026-06-20T11:21:58.9075676Z               "path": "crates/spt-daemon/src/tunnelhub.rs",
2026-06-20T11:21:58.9075777Z               "line": 208
2026-06-20T11:21:58.9075886Z             },
2026-06-20T11:21:58.9076005Z             {
2026-06-20T11:21:58.9076144Z               "path": "crates/spt-daemon/src/tunnelhub.rs",
2026-06-20T11:21:58.9076243Z               "line": 227
2026-06-20T11:21:58.9076354Z             },
2026-06-20T11:21:58.9076468Z             {
2026-06-20T11:21:58.9076610Z               "path": "crates/spt-daemon/src/tunnelhub.rs",
2026-06-20T11:21:58.9076722Z               "line": 253
2026-06-20T11:21:58.9076844Z             },
2026-06-20T11:21:58.9076959Z             {
2026-06-20T11:21:58.9077107Z               "path": "crates/spt-daemon/src/tunnelhub.rs",
2026-06-20T11:21:58.9077225Z               "line": 272
2026-06-20T11:21:58.9077329Z             },
2026-06-20T11:21:58.9077433Z             {
2026-06-20T11:21:58.9077575Z               "path": "crates/spt-daemon/src/tunnelhub.rs",
2026-06-20T11:21:58.9077790Z               "line": 392
2026-06-20T11:21:58.9077908Z             },
2026-06-20T11:21:58.9078015Z             {
2026-06-20T11:21:58.9078142Z               "path": "crates/spt-daemon/src/tunnelhub.rs",
2026-06-20T11:21:58.9078262Z               "line": 421
2026-06-20T11:21:58.9078362Z             },
2026-06-20T11:21:58.9078467Z             {
2026-06-20T11:21:58.9078620Z               "path": "crates/spt-daemon/src/tunnelhub.rs",
2026-06-20T11:21:58.9078739Z               "line": 439
2026-06-20T11:21:58.9078853Z             },
2026-06-20T11:21:58.9079048Z             {
2026-06-20T11:21:58.9079191Z               "path": "crates/spt-daemon/src/tunnelhub.rs",
2026-06-20T11:21:58.9079434Z               "line": 458
2026-06-20T11:21:58.9079536Z             },
2026-06-20T11:21:58.9079645Z             {
2026-06-20T11:21:58.9079791Z               "path": "crates/spt-daemon/src/tunnelhub.rs",
2026-06-20T11:21:58.9079906Z               "line": 486
2026-06-20T11:21:58.9080019Z             },
2026-06-20T11:21:58.9080132Z             {
2026-06-20T11:21:58.9080266Z               "path": "crates/spt-runtime/src/manifest.rs",
2026-06-20T11:21:58.9080385Z               "line": 624
2026-06-20T11:21:58.9080495Z             },
2026-06-20T11:21:58.9080600Z             {
2026-06-20T11:21:58.9080743Z               "path": "crates/spt-runtime/src/manifest.rs",
2026-06-20T11:21:58.9080863Z               "line": 829
2026-06-20T11:21:58.9080972Z             },
2026-06-20T11:21:58.9081081Z             {
2026-06-20T11:21:58.9081211Z               "path": "crates/spt/src/api/reporting.rs",
2026-06-20T11:21:58.9081334Z               "line": 435
2026-06-20T11:21:58.9081458Z             },
2026-06-20T11:21:58.9081563Z             {
2026-06-20T11:21:58.9081692Z               "path": "crates/spt/src/cli.rs",
2026-06-20T11:21:58.9081797Z               "line": 6574
2026-06-20T11:21:58.9081906Z             }
2026-06-20T11:21:58.9082021Z           ]
2026-06-20T11:21:58.9082117Z         },
2026-06-20T11:21:58.9082235Z         "int": {
2026-06-20T11:21:58.9082359Z           "complete": true,
2026-06-20T11:21:58.9082475Z           "evidence": [
2026-06-20T11:21:58.9082574Z             {
2026-06-20T11:21:58.9082720Z               "path": "crates/spt/tests/tunnel_e2e.rs",
2026-06-20T11:21:58.9082836Z               "line": 18
2026-06-20T11:21:58.9082950Z             }
2026-06-20T11:21:58.9083059Z           ]
2026-06-20T11:21:58.9083165Z         },
2026-06-20T11:21:58.9083288Z         "unit": {
2026-06-20T11:21:58.9083398Z           "complete": true,
2026-06-20T11:21:58.9083513Z           "evidence": [
2026-06-20T11:21:58.9083622Z             {
2026-06-20T11:21:58.9083765Z               "path": "crates/spt-daemon/src/nethost.rs",
2026-06-20T11:21:58.9083884Z               "line": 1391
2026-06-20T11:21:58.9083989Z             },
2026-06-20T11:21:58.9084100Z             {
2026-06-20T11:21:58.9084247Z               "path": "crates/spt-daemon/src/nethost.rs",
2026-06-20T11:21:58.9084367Z               "line": 1420
2026-06-20T11:21:58.9084476Z             },
2026-06-20T11:21:58.9084585Z             {
2026-06-20T11:21:58.9084734Z               "path": "crates/spt-daemon/src/tunnelhub.rs",
2026-06-20T11:21:58.9084842Z               "line": 504
2026-06-20T11:21:58.9084951Z             },
2026-06-20T11:21:58.9085051Z             {
2026-06-20T11:21:58.9085187Z               "path": "crates/spt-daemon/src/tunnelhub.rs",
2026-06-20T11:21:58.9085311Z               "line": 514
2026-06-20T11:21:58.9085412Z             },
2026-06-20T11:21:58.9085530Z             {
2026-06-20T11:21:58.9085669Z               "path": "crates/spt-daemon/src/tunnelhub.rs",
2026-06-20T11:21:58.9085793Z               "line": 531
2026-06-20T11:21:58.9085907Z             },
2026-06-20T11:21:58.9086027Z             {
2026-06-20T11:21:58.9086174Z               "path": "crates/spt-daemon/src/tunnelhub.rs",
2026-06-20T11:21:58.9086289Z               "line": 543
2026-06-20T11:21:58.9086398Z             },
2026-06-20T11:21:58.9086512Z             {
2026-06-20T11:21:58.9086766Z               "path": "crates/spt-daemon/src/tunnelhub.rs",
2026-06-20T11:21:58.9086880Z               "line": 555
2026-06-20T11:21:58.9086991Z             },
2026-06-20T11:21:58.9087109Z             {
2026-06-20T11:21:58.9087248Z               "path": "crates/spt-runtime/src/manifest.rs",
2026-06-20T11:21:58.9087371Z               "line": 1145
2026-06-20T11:21:58.9087485Z             },
2026-06-20T11:21:58.9087601Z             {
2026-06-20T11:21:58.9087728Z               "path": "crates/spt/src/api/mod.rs",
2026-06-20T11:21:58.9087841Z               "line": 776
2026-06-20T11:21:58.9087957Z             }
2026-06-20T11:21:58.9088068Z           ]
2026-06-20T11:21:58.9088260Z         }
2026-06-20T11:21:58.9088369Z       }
2026-06-20T11:21:58.9088478Z     },
2026-06-20T11:21:58.9088584Z     {
2026-06-20T11:21:58.9088712Z       "id": "REQ-SHELL-5",
2026-06-20T11:21:58.9090019Z       "title": "Shell ownership is owner-type-agnostic: any non-Shell endpoint type may own/spawn/drive/command/link a shell (Gateway the named first) — control-exclusivity keys on the owner endpoint_id, NEVER on the owner's endpoint type. No ownership path (mint, launch, owner-from-link, cmd, drive, tunnel, sleep/wake, owner-shutdown) inspects the owner's type (CONTEXT:264, ratified 2026-06-11 Gateway grill).",
2026-06-20T11:21:58.9090144Z       "requiredStages": [
2026-06-20T11:21:58.9090262Z         "doc",
2026-06-20T11:21:58.9090370Z         "impl",
2026-06-20T11:21:58.9090485Z         "unit",
2026-06-20T11:21:58.9090593Z         "int"
2026-06-20T11:21:58.9090711Z       ],
2026-06-20T11:21:58.9090831Z       "stages": {
2026-06-20T11:21:58.9090936Z         "doc": {
2026-06-20T11:21:58.9091060Z           "complete": true,
2026-06-20T11:21:58.9091170Z           "evidence": [
2026-06-20T11:21:58.9091283Z             {
2026-06-20T11:21:58.9091403Z               "path": "CONTEXT.md",
2026-06-20T11:21:58.9091508Z               "line": 284
2026-06-20T11:21:58.9091627Z             }
2026-06-20T11:21:58.9091728Z           ]
2026-06-20T11:21:58.9091851Z         },
2026-06-20T11:21:58.9091966Z         "impl": {
2026-06-20T11:21:58.9092091Z           "complete": true,
2026-06-20T11:21:58.9092204Z           "evidence": [
2026-06-20T11:21:58.9092313Z             {
2026-06-20T11:21:58.9092462Z               "path": "crates/spt-daemon/src/shellhost.rs",
2026-06-20T11:21:58.9092581Z               "line": 260
2026-06-20T11:21:58.9092687Z             }
2026-06-20T11:21:58.9092791Z           ]
2026-06-20T11:21:58.9092910Z         },
2026-06-20T11:21:58.9093016Z         "int": {
2026-06-20T11:21:58.9093134Z           "complete": true,
2026-06-20T11:21:58.9093242Z           "evidence": [
2026-06-20T11:21:58.9093348Z             {
2026-06-20T11:21:58.9093500Z               "path": "crates/spt-daemon/tests/twohost.rs",
2026-06-20T11:21:58.9093624Z               "line": 827
2026-06-20T11:21:58.9093744Z             },
2026-06-20T11:21:58.9093862Z             {
2026-06-20T11:21:58.9094001Z               "path": "crates/spt-daemon/tests/twohost.rs",
2026-06-20T11:21:58.9094125Z               "line": 1290
2026-06-20T11:21:58.9094234Z             },
2026-06-20T11:21:58.9094359Z             {
2026-06-20T11:21:58.9094511Z               "path": "crates/spt/tests/gateway_owner_shell_e2e.rs",
2026-06-20T11:21:58.9094631Z               "line": 23
2026-06-20T11:21:58.9094745Z             }
2026-06-20T11:21:58.9094844Z           ]
2026-06-20T11:21:58.9094965Z         },
2026-06-20T11:21:58.9095078Z         "unit": {
2026-06-20T11:21:58.9095207Z           "complete": true,
2026-06-20T11:21:58.9095322Z           "evidence": [
2026-06-20T11:21:58.9095435Z             {
2026-06-20T11:21:58.9095583Z               "path": "crates/spt-daemon/src/linkhost.rs",
2026-06-20T11:21:58.9095696Z               "line": 803
2026-06-20T11:21:58.9095814Z             }
2026-06-20T11:21:58.9095924Z           ]
2026-06-20T11:21:58.9096030Z         }
2026-06-20T11:21:58.9096138Z       }
2026-06-20T11:21:58.9096248Z     },
2026-06-20T11:21:58.9096349Z     {
2026-06-20T11:21:58.9096467Z       "id": "REQ-START-1",
2026-06-20T11:21:58.9096781Z       "title": "Adapters never resolve SPT_HOME; binary on PATH; api bridging only",
2026-06-20T11:21:58.9096902Z       "requiredStages": [
2026-06-20T11:21:58.9097030Z         "impl",
2026-06-20T11:21:58.9097149Z         "unit"
2026-06-20T11:21:58.9097264Z       ],
2026-06-20T11:21:58.9097373Z       "stages": {
2026-06-20T11:21:58.9097489Z         "doc": {
2026-06-20T11:21:58.9097612Z           "complete": false,
2026-06-20T11:21:58.9097716Z           "evidence": []
2026-06-20T11:21:58.9097827Z         },
2026-06-20T11:21:58.9097936Z         "impl": {
2026-06-20T11:21:58.9098060Z           "complete": true,
2026-06-20T11:21:58.9098274Z           "evidence": [
2026-06-20T11:21:58.9098388Z             {
2026-06-20T11:21:58.9098526Z               "path": "crates/spt-store/src/seed.rs",
2026-06-20T11:21:58.9098633Z               "line": 16
2026-06-20T11:21:58.9098758Z             }
2026-06-20T11:21:58.9098858Z           ]
2026-06-20T11:21:58.9099052Z         },
2026-06-20T11:21:58.9099177Z         "int": {
2026-06-20T11:21:58.9099291Z           "complete": false,
2026-06-20T11:21:58.9099435Z           "evidence": []
2026-06-20T11:21:58.9099540Z         },
2026-06-20T11:21:58.9099663Z         "unit": {
2026-06-20T11:21:58.9099779Z           "complete": true,
2026-06-20T11:21:58.9099898Z           "evidence": [
2026-06-20T11:21:58.9100016Z             {
2026-06-20T11:21:58.9100150Z               "path": "crates/spt-store/src/seed.rs",
2026-06-20T11:21:58.9100269Z               "line": 48
2026-06-20T11:21:58.9100370Z             },
2026-06-20T11:21:58.9100488Z             {
2026-06-20T11:21:58.9100622Z               "path": "crates/spt-store/src/seed.rs",
2026-06-20T11:21:58.9100747Z               "line": 63
2026-06-20T11:21:58.9100864Z             }
2026-06-20T11:21:58.9100963Z           ]
2026-06-20T11:21:58.9101069Z         }
2026-06-20T11:21:58.9101176Z       }
2026-06-20T11:21:58.9101295Z     },
2026-06-20T11:21:58.9101411Z     {
2026-06-20T11:21:58.9101529Z       "id": "REQ-START-2",
2026-06-20T11:21:58.9101697Z       "title": "Harness-hosted startup: api seed then listen",
2026-06-20T11:21:58.9101806Z       "requiredStages": [
2026-06-20T11:21:58.9101934Z         "impl",
2026-06-20T11:21:58.9102040Z         "unit",
2026-06-20T11:21:58.9102154Z         "int"
2026-06-20T11:21:58.9102259Z       ],
2026-06-20T11:21:58.9102378Z       "stages": {
2026-06-20T11:21:58.9102492Z         "doc": {
2026-06-20T11:21:58.9102598Z           "complete": false,
2026-06-20T11:21:58.9102717Z           "evidence": []
2026-06-20T11:21:58.9102826Z         },
2026-06-20T11:21:58.9102947Z         "impl": {
2026-06-20T11:21:58.9103060Z           "complete": true,
2026-06-20T11:21:58.9103184Z           "evidence": [
2026-06-20T11:21:58.9103290Z             {
2026-06-20T11:21:58.9103417Z               "path": "crates/spt/src/api/startup.rs",
2026-06-20T11:21:58.9103538Z               "line": 16
2026-06-20T11:21:58.9103642Z             },
2026-06-20T11:21:58.9103746Z             {
2026-06-20T11:21:58.9103888Z               "path": "crates/spt/src/api/startup.rs",
2026-06-20T11:21:58.9104004Z               "line": 115
2026-06-20T11:21:58.9104113Z             },
2026-06-20T11:21:58.9104223Z             {
2026-06-20T11:21:58.9104356Z               "path": "crates/spt/src/api/startup.rs",
2026-06-20T11:21:58.9104469Z               "line": 300
2026-06-20T11:21:58.9104585Z             }
2026-06-20T11:21:58.9104699Z           ]
2026-06-20T11:21:58.9104809Z         },
2026-06-20T11:21:58.9104928Z         "int": {
2026-06-20T11:21:58.9105052Z           "complete": true,
2026-06-20T11:21:58.9105162Z           "evidence": [
2026-06-20T11:21:58.9105267Z             {
2026-06-20T11:21:58.9105419Z               "path": "crates/spt/tests/contract_e2e.rs",
2026-06-20T11:21:58.9105530Z               "line": 186
2026-06-20T11:21:58.9105638Z             }
2026-06-20T11:21:58.9105748Z           ]
2026-06-20T11:21:58.9105859Z         },
2026-06-20T11:21:58.9105981Z         "unit": {
2026-06-20T11:21:58.9106085Z           "complete": true,
2026-06-20T11:21:58.9106313Z           "evidence": [
2026-06-20T11:21:58.9106421Z             {
2026-06-20T11:21:58.9106547Z               "path": "crates/spt/src/api/startup.rs",
2026-06-20T11:21:58.9106655Z               "line": 590
2026-06-20T11:21:58.9106760Z             },
2026-06-20T11:21:58.9106875Z             {
2026-06-20T11:21:58.9107012Z               "path": "crates/spt/src/api/startup.rs",
2026-06-20T11:21:58.9107133Z               "line": 623
2026-06-20T11:21:58.9107242Z             }
2026-06-20T11:21:58.9107351Z           ]
2026-06-20T11:21:58.9107467Z         }
2026-06-20T11:21:58.9107581Z       }
2026-06-20T11:21:58.9107690Z     },
2026-06-20T11:21:58.9107914Z     {
2026-06-20T11:21:58.9108039Z       "id": "REQ-START-3",
2026-06-20T11:21:58.9108229Z       "title": "spt-hosted startup: spawn-session then api bind (no file)",
2026-06-20T11:21:58.9108349Z       "requiredStages": [
2026-06-20T11:21:58.9108468Z         "impl",
2026-06-20T11:21:58.9108573Z         "unit",
2026-06-20T11:21:58.9108698Z         "int"
2026-06-20T11:21:58.9108806Z       ],
2026-06-20T11:21:58.9108919Z       "stages": {
2026-06-20T11:21:58.9109119Z         "doc": {
2026-06-20T11:21:58.9109236Z           "complete": false,
2026-06-20T11:21:58.9109365Z           "evidence": []
2026-06-20T11:21:58.9109480Z         },
2026-06-20T11:21:58.9109599Z         "impl": {
2026-06-20T11:21:58.9109719Z           "complete": true,
2026-06-20T11:21:58.9109837Z           "evidence": [
2026-06-20T11:21:58.9109932Z             {
2026-06-20T11:21:58.9110076Z               "path": "crates/spt-daemon/src/seedmap.rs",
2026-06-20T11:21:58.9110185Z               "line": 23
2026-06-20T11:21:58.9110301Z             },
2026-06-20T11:21:58.9110419Z             {
2026-06-20T11:21:58.9110548Z               "path": "crates/spt-daemon/src/seedmap.rs",
2026-06-20T11:21:58.9110668Z               "line": 205
2026-06-20T11:21:58.9110776Z             },
2026-06-20T11:21:58.9110891Z             {
2026-06-20T11:21:58.9111039Z               "path": "crates/spt-daemon/src/seedmap.rs",
2026-06-20T11:21:58.9111153Z               "line": 221
2026-06-20T11:21:58.9111269Z             },
2026-06-20T11:21:58.9111373Z             {
2026-06-20T11:21:58.9111519Z               "path": "crates/spt/src/api/startup.rs",
2026-06-20T11:21:58.9111634Z               "line": 17
2026-06-20T11:21:58.9111746Z             },
2026-06-20T11:21:58.9111855Z             {
2026-06-20T11:21:58.9111985Z               "path": "crates/spt/src/api/startup.rs",
2026-06-20T11:21:58.9112103Z               "line": 35
2026-06-20T11:21:58.9112223Z             },
2026-06-20T11:21:58.9112328Z             {
2026-06-20T11:21:58.9112461Z               "path": "crates/spt/src/api/startup.rs",
2026-06-20T11:21:58.9112577Z               "line": 116
2026-06-20T11:21:58.9112686Z             }
2026-06-20T11:21:58.9112795Z           ]
2026-06-20T11:21:58.9112911Z         },
2026-06-20T11:21:58.9113015Z         "int": {
2026-06-20T11:21:58.9113138Z           "complete": true,
2026-06-20T11:21:58.9113253Z           "evidence": [
2026-06-20T11:21:58.9113362Z             {
2026-06-20T11:21:58.9113507Z               "path": "crates/spt/tests/contract_e2e.rs",
2026-06-20T11:21:58.9113615Z               "line": 488
2026-06-20T11:21:58.9113735Z             }
2026-06-20T11:21:58.9113841Z           ]
2026-06-20T11:21:58.9113948Z         },
2026-06-20T11:21:58.9114064Z         "unit": {
2026-06-20T11:21:58.9114179Z           "complete": true,
2026-06-20T11:21:58.9114301Z           "evidence": [
2026-06-20T11:21:58.9114405Z             {
2026-06-20T11:21:58.9114545Z               "path": "crates/spt-daemon/src/seedmap.rs",
2026-06-20T11:21:58.9114658Z               "line": 381
2026-06-20T11:21:58.9114763Z             },
2026-06-20T11:21:58.9114878Z             {
2026-06-20T11:21:58.9115025Z               "path": "crates/spt-daemon/src/seedmap.rs",
2026-06-20T11:21:58.9115145Z               "line": 402
2026-06-20T11:21:58.9115255Z             },
2026-06-20T11:21:58.9115374Z             {
2026-06-20T11:21:58.9115507Z               "path": "crates/spt-daemon/src/seedmap.rs",
2026-06-20T11:21:58.9115737Z               "line": 412
2026-06-20T11:21:58.9115865Z             },
2026-06-20T11:21:58.9115970Z             {
2026-06-20T11:21:58.9116104Z               "path": "crates/spt/src/api/startup.rs",
2026-06-20T11:21:58.9116217Z               "line": 591
2026-06-20T11:21:58.9116342Z             },
2026-06-20T11:21:58.9116452Z             {
2026-06-20T11:21:58.9116584Z               "path": "crates/spt/src/api/startup.rs",
2026-06-20T11:21:58.9116693Z               "line": 624
2026-06-20T11:21:58.9116802Z             },
2026-06-20T11:21:58.9116910Z             {
2026-06-20T11:21:58.9117040Z               "path": "crates/spt/src/api/startup.rs",
2026-06-20T11:21:58.9117258Z               "line": 657
2026-06-20T11:21:58.9117364Z             }
2026-06-20T11:21:58.9117464Z           ]
2026-06-20T11:21:58.9117577Z         }
2026-06-20T11:21:58.9117684Z       }
2026-06-20T11:21:58.9117802Z     },
2026-06-20T11:21:58.9117906Z     {
2026-06-20T11:21:58.9118036Z       "id": "REQ-START-4",
2026-06-20T11:21:58.9118193Z       "title": "Adapter-injected env aliases (SPT/OWL/LIVE)",
2026-06-20T11:21:58.9118318Z       "requiredStages": [
2026-06-20T11:21:58.9118422Z         "impl",
2026-06-20T11:21:58.9118527Z         "unit"
2026-06-20T11:21:58.9118642Z       ],
2026-06-20T11:21:58.9118751Z       "stages": {
2026-06-20T11:21:58.9118865Z         "doc": {
2026-06-20T11:21:58.9119056Z           "complete": false,
2026-06-20T11:21:58.9119170Z           "evidence": []
2026-06-20T11:21:58.9119286Z         },
2026-06-20T11:21:58.9119404Z         "impl": {
2026-06-20T11:21:58.9119532Z           "complete": true,
2026-06-20T11:21:58.9119646Z           "evidence": [
2026-06-20T11:21:58.9119759Z             {
2026-06-20T11:21:58.9119887Z               "path": "crates/spt/src/api/reporting.rs",
2026-06-20T11:21:58.9120007Z               "line": 585
2026-06-20T11:21:58.9120125Z             }
2026-06-20T11:21:58.9120241Z           ]
2026-06-20T11:21:58.9120360Z         },
2026-06-20T11:21:58.9120459Z         "int": {
2026-06-20T11:21:58.9120579Z           "complete": false,
2026-06-20T11:21:58.9120689Z           "evidence": []
2026-06-20T11:21:58.9123612Z         },
2026-06-20T11:21:58.9123752Z         "unit": {
2026-06-20T11:21:58.9123875Z           "complete": true,
2026-06-20T11:21:58.9123999Z           "evidence": [
2026-06-20T11:21:58.9124119Z             {
2026-06-20T11:21:58.9124280Z               "path": "crates/spt/src/api/reporting.rs",
2026-06-20T11:21:58.9124391Z               "line": 1026
2026-06-20T11:21:58.9124513Z             }
2026-06-20T11:21:58.9124624Z           ]
2026-06-20T11:21:58.9124739Z         }
2026-06-20T11:21:58.9124866Z       }
2026-06-20T11:21:58.9124975Z     },
2026-06-20T11:21:58.9125090Z     {
2026-06-20T11:21:58.9125213Z       "id": "REQ-START-5",
2026-06-20T11:21:58.9128076Z       "title": "Adapter-agnostic harness-hosted seed + bind-time adapter/profile resolution (ADR-0021): `api seed` carries only parent_pid + session_id (+ optional cwd), no --adapter — a pure \"a harness session exists at this pid\" record; --adapter becomes an OPTIONAL override across the whole api group (an explicit name[:profile] for adapter dev, never required). Omitted, listen/poll resolve the owning adapter/profile AT BIND as a pure read against the live registry — never a seed-time snapshot that can drift: seed parent_pid → exe basename → host_binaries candidate set (REQ-MANIFEST-8) → active-profile pointer (REQ-INSTALL-12) primary, else greatest-registered_at_ms candidate base profile (name-asc tie) → friendly zero-match error. Covers BOTH LiveAgent (listen) and ReadyAgent (poll) bringup. Restores legacy parity: `$LIVE start <id>` → `$SPT listen <id>` with no mandatory --adapter, one generic SessionStart hook per harness binary. (v0.9.0)",
2026-06-20T11:21:58.9128230Z       "requiredStages": [
2026-06-20T11:21:58.9128339Z         "doc",
2026-06-20T11:21:58.9128448Z         "impl",
2026-06-20T11:21:58.9128568Z         "unit",
2026-06-20T11:21:58.9128673Z         "int"
2026-06-20T11:21:58.9129054Z       ],
2026-06-20T11:21:58.9129169Z       "stages": {
2026-06-20T11:21:58.9129292Z         "doc": {
2026-06-20T11:21:58.9129416Z           "complete": true,
2026-06-20T11:21:58.9129569Z           "evidence": [
2026-06-20T11:21:58.9129683Z             {
2026-06-20T11:21:58.9129798Z               "path": "CONTEXT.md",
2026-06-20T11:21:58.9129917Z               "line": 176
2026-06-20T11:21:58.9130030Z             },
2026-06-20T11:21:58.9130150Z             {
2026-06-20T11:21:58.9130300Z               "path": "docs-site/src/harness-contract/api.md",
2026-06-20T11:21:58.9130419Z               "line": 28
2026-06-20T11:21:58.9130520Z             }
2026-06-20T11:21:58.9130743Z           ]
2026-06-20T11:21:58.9130849Z         },
2026-06-20T11:21:58.9130967Z         "impl": {
2026-06-20T11:21:58.9131082Z           "complete": true,
2026-06-20T11:21:58.9131192Z           "evidence": [
2026-06-20T11:21:58.9131306Z             {
2026-06-20T11:21:58.9131445Z               "path": "crates/spt-runtime/src/resolve.rs",
2026-06-20T11:21:58.9131568Z               "line": 26
2026-06-20T11:21:58.9131682Z             },
2026-06-20T11:21:58.9131788Z             {
2026-06-20T11:21:58.9131930Z               "path": "crates/spt-runtime/src/resolve.rs",
2026-06-20T11:21:58.9132046Z               "line": 212
2026-06-20T11:21:58.9132155Z             },
2026-06-20T11:21:58.9132260Z             {
2026-06-20T11:21:58.9132394Z               "path": "crates/spt-runtime/src/resolve.rs",
2026-06-20T11:21:58.9132507Z               "line": 221
2026-06-20T11:21:58.9132625Z             },
2026-06-20T11:21:58.9132740Z             {
2026-06-20T11:21:58.9132871Z               "path": "crates/spt/src/api/mod.rs",
2026-06-20T11:21:58.9132985Z               "line": 485
2026-06-20T11:21:58.9133096Z             },
2026-06-20T11:21:58.9133209Z             {
2026-06-20T11:21:58.9133353Z               "path": "crates/spt/src/api/startup.rs",
2026-06-20T11:21:58.9133458Z               "line": 36
2026-06-20T11:21:58.9133567Z             },
2026-06-20T11:21:58.9133687Z             {
2026-06-20T11:21:58.9133811Z               "path": "crates/spt/src/api/startup.rs",
2026-06-20T11:21:58.9133934Z               "line": 118
2026-06-20T11:21:58.9134045Z             },
2026-06-20T11:21:58.9134159Z             {
2026-06-20T11:21:58.9134283Z               "path": "crates/spt/src/api/startup.rs",
2026-06-20T11:21:58.9134402Z               "line": 329
2026-06-20T11:21:58.9134516Z             }
2026-06-20T11:21:58.9134622Z           ]
2026-06-20T11:21:58.9134726Z         },
2026-06-20T11:21:58.9134835Z         "int": {
2026-06-20T11:21:58.9134961Z           "complete": true,
2026-06-20T11:21:58.9135078Z           "evidence": [
2026-06-20T11:21:58.9135199Z             {
2026-06-20T11:21:58.9135342Z               "path": "crates/spt/tests/live_resolve_e2e.rs",
2026-06-20T11:21:58.9135450Z               "line": 17
2026-06-20T11:21:58.9135559Z             }
2026-06-20T11:21:58.9135655Z           ]
2026-06-20T11:21:58.9135764Z         },
2026-06-20T11:21:58.9135869Z         "unit": {
2026-06-20T11:21:58.9135998Z           "complete": true,
2026-06-20T11:21:58.9136107Z           "evidence": [
2026-06-20T11:21:58.9136213Z             {
2026-06-20T11:21:58.9136366Z               "path": "crates/spt-runtime/src/resolve.rs",
2026-06-20T11:21:58.9136470Z               "line": 358
2026-06-20T11:21:58.9136586Z             },
2026-06-20T11:21:58.9136695Z             {
2026-06-20T11:21:58.9136843Z               "path": "crates/spt-runtime/src/resolve.rs",
2026-06-20T11:21:58.9136970Z               "line": 371
2026-06-20T11:21:58.9137085Z             },
2026-06-20T11:21:58.9137201Z             {
2026-06-20T11:21:58.9137328Z               "path": "crates/spt/src/api/mod.rs",
2026-06-20T11:21:58.9137452Z               "line": 597
2026-06-20T11:21:58.9137554Z             }
2026-06-20T11:21:58.9137662Z           ]
2026-06-20T11:21:58.9137770Z         }
2026-06-20T11:21:58.9137876Z       }
2026-06-20T11:21:58.9137993Z     },
2026-06-20T11:21:58.9138087Z     {
2026-06-20T11:21:58.9138317Z       "id": "REQ-STORE-1",
2026-06-20T11:21:58.9139261Z       "title": "spt-store::BranchStore (git branch as versioned KV; commit=checkpoint/tip=resume, atomic multi-key, merge-native sync) is the substrate for coarse/durable/audited state (context, registry snapshot+distribution, daemon checkpoint); hot paths (B5 fsync journal) + indexed queries (SQLite spool) excluded (ADR-0011)",
2026-06-20T11:21:58.9139395Z       "requiredStages": [
2026-06-20T11:21:58.9139518Z         "impl",
2026-06-20T11:21:58.9139628Z         "unit"
2026-06-20T11:21:58.9139729Z       ],
2026-06-20T11:21:58.9139833Z       "stages": {
2026-06-20T11:21:58.9139957Z         "doc": {
2026-06-20T11:21:58.9140181Z           "complete": false,
2026-06-20T11:21:58.9140301Z           "evidence": []
2026-06-20T11:21:58.9140421Z         },
2026-06-20T11:21:58.9140524Z         "impl": {
2026-06-20T11:21:58.9140642Z           "complete": true,
2026-06-20T11:21:58.9140752Z           "evidence": [
2026-06-20T11:21:58.9140860Z             {
2026-06-20T11:21:58.9141012Z               "path": "crates/spt-store/src/branchstore.rs",
2026-06-20T11:21:58.9141137Z               "line": 23
2026-06-20T11:21:58.9141246Z             },
2026-06-20T11:21:58.9141352Z             {
2026-06-20T11:21:58.9141499Z               "path": "crates/spt-store/src/branchstore.rs",
2026-06-20T11:21:58.9141608Z               "line": 46
2026-06-20T11:21:58.9141714Z             },
2026-06-20T11:21:58.9141823Z             {
2026-06-20T11:21:58.9141961Z               "path": "crates/spt-store/src/branchstore.rs",
2026-06-20T11:21:58.9142076Z               "line": 97
2026-06-20T11:21:58.9142185Z             },
2026-06-20T11:21:58.9142291Z             {
2026-06-20T11:21:58.9142438Z               "path": "crates/spt-store/src/branchstore.rs",
2026-06-20T11:21:58.9142543Z               "line": 125
2026-06-20T11:21:58.9142654Z             },
2026-06-20T11:21:58.9142752Z             {
2026-06-20T11:21:58.9142901Z               "path": "crates/spt-store/src/branchstore.rs",
2026-06-20T11:21:58.9143011Z               "line": 207
2026-06-20T11:21:58.9143128Z             },
2026-06-20T11:21:58.9143238Z             {
2026-06-20T11:21:58.9143366Z               "path": "crates/spt-store/src/branchstore.rs",
2026-06-20T11:21:58.9143483Z               "line": 231
2026-06-20T11:21:58.9143594Z             },
2026-06-20T11:21:58.9143718Z             {
2026-06-20T11:21:58.9143851Z               "path": "crates/spt-store/src/branchstore.rs",
2026-06-20T11:21:58.9143971Z               "line": 467
2026-06-20T11:21:58.9144080Z             },
2026-06-20T11:21:58.9144189Z             {
2026-06-20T11:21:58.9144342Z               "path": "crates/spt-store/src/contextstore.rs",
2026-06-20T11:21:58.9144451Z               "line": 25
2026-06-20T11:21:58.9144557Z             },
2026-06-20T11:21:58.9144661Z             {
2026-06-20T11:21:58.9144809Z               "path": "crates/spt-store/src/contextstore.rs",
2026-06-20T11:21:58.9144929Z               "line": 120
2026-06-20T11:21:58.9145043Z             },
2026-06-20T11:21:58.9145163Z             {
2026-06-20T11:21:58.9145296Z               "path": "crates/spt-store/src/contextstore.rs",
2026-06-20T11:21:58.9145405Z               "line": 148
2026-06-20T11:21:58.9145516Z             },
2026-06-20T11:21:58.9145624Z             {
2026-06-20T11:21:58.9145773Z               "path": "crates/spt-store/src/contextstore.rs",
2026-06-20T11:21:58.9145888Z               "line": 165
2026-06-20T11:21:58.9146005Z             },
2026-06-20T11:21:58.9146115Z             {
2026-06-20T11:21:58.9146259Z               "path": "crates/spt-store/src/contextstore.rs",
2026-06-20T11:21:58.9146377Z               "line": 180
2026-06-20T11:21:58.9146492Z             },
2026-06-20T11:21:58.9146602Z             {
2026-06-20T11:21:58.9146734Z               "path": "crates/spt-store/src/contextstore.rs",
2026-06-20T11:21:58.9146845Z               "line": 198
2026-06-20T11:21:58.9146954Z             },
2026-06-20T11:21:58.9147064Z             {
2026-06-20T11:21:58.9147202Z               "path": "crates/spt-store/src/contextstore.rs",
2026-06-20T11:21:58.9147427Z               "line": 207
2026-06-20T11:21:58.9147535Z             },
2026-06-20T11:21:58.9147640Z             {
2026-06-20T11:21:58.9147785Z               "path": "crates/spt-store/src/project.rs",
2026-06-20T11:21:58.9147893Z               "line": 16
2026-06-20T11:21:58.9148017Z             },
2026-06-20T11:21:58.9148123Z             {
2026-06-20T11:21:58.9148255Z               "path": "crates/spt-store/src/project.rs",
2026-06-20T11:21:58.9148378Z               "line": 63
2026-06-20T11:21:58.9148487Z             }
2026-06-20T11:21:58.9148596Z           ]
2026-06-20T11:21:58.9148696Z         },
2026-06-20T11:21:58.9148886Z         "int": {
2026-06-20T11:21:58.9149097Z           "complete": false,
2026-06-20T11:21:58.9149220Z           "evidence": []
2026-06-20T11:21:58.9149364Z         },
2026-06-20T11:21:58.9149474Z         "unit": {
2026-06-20T11:21:58.9149587Z           "complete": true,
2026-06-20T11:21:58.9149693Z           "evidence": [
2026-06-20T11:21:58.9149812Z             {
2026-06-20T11:21:58.9149950Z               "path": "crates/spt-store/src/branchstore.rs",
2026-06-20T11:21:58.9150060Z               "line": 584
2026-06-20T11:21:58.9150174Z             },
2026-06-20T11:21:58.9150275Z             {
2026-06-20T11:21:58.9150422Z               "path": "crates/spt-store/src/branchstore.rs",
2026-06-20T11:21:58.9150527Z               "line": 594
2026-06-20T11:21:58.9150633Z             },
2026-06-20T11:21:58.9150745Z             {
2026-06-20T11:21:58.9150885Z               "path": "crates/spt-store/src/branchstore.rs",
2026-06-20T11:21:58.9151005Z               "line": 616
2026-06-20T11:21:58.9151108Z             },
2026-06-20T11:21:58.9151217Z             {
2026-06-20T11:21:58.9151364Z               "path": "crates/spt-store/src/branchstore.rs",
2026-06-20T11:21:58.9151472Z               "line": 632
2026-06-20T11:21:58.9151587Z             },
2026-06-20T11:21:58.9151688Z             {
2026-06-20T11:21:58.9151834Z               "path": "crates/spt-store/src/branchstore.rs",
2026-06-20T11:21:58.9151954Z               "line": 690
2026-06-20T11:21:58.9152073Z             },
2026-06-20T11:21:58.9152183Z             {
2026-06-20T11:21:58.9152331Z               "path": "crates/spt-store/src/contextstore.rs",
2026-06-20T11:21:58.9152445Z               "line": 472
2026-06-20T11:21:58.9152556Z             },
2026-06-20T11:21:58.9152664Z             {
2026-06-20T11:21:58.9152807Z               "path": "crates/spt-store/src/contextstore.rs",
2026-06-20T11:21:58.9152927Z               "line": 507
2026-06-20T11:21:58.9153036Z             },
2026-06-20T11:21:58.9153151Z             {
2026-06-20T11:21:58.9153298Z               "path": "crates/spt-store/src/project.rs",
2026-06-20T11:21:58.9153409Z               "line": 120
2026-06-20T11:21:58.9153520Z             },
2026-06-20T11:21:58.9153632Z             {
2026-06-20T11:21:58.9153774Z               "path": "crates/spt-store/src/project.rs",
2026-06-20T11:21:58.9153893Z               "line": 128
2026-06-20T11:21:58.9154001Z             }
2026-06-20T11:21:58.9154106Z           ]
2026-06-20T11:21:58.9154216Z         }
2026-06-20T11:21:58.9154321Z       }
2026-06-20T11:21:58.9154425Z     },
2026-06-20T11:21:58.9154531Z     {
2026-06-20T11:21:58.9154654Z       "id": "REQ-SUBNET-1",
2026-06-20T11:21:58.9154993Z       "title": "spt subnet noun namespace: status view (bare + status [NAME] [--nodes]), create (QR/otpauth), show-code; spt pair deleted",
2026-06-20T11:21:58.9155122Z       "requiredStages": [
2026-06-20T11:21:58.9155236Z         "impl",
2026-06-20T11:21:58.9155350Z         "unit"
2026-06-20T11:21:58.9155456Z       ],
2026-06-20T11:21:58.9155570Z       "stages": {
2026-06-20T11:21:58.9155689Z         "doc": {
2026-06-20T11:21:58.9155799Z           "complete": false,
2026-06-20T11:21:58.9155918Z           "evidence": []
2026-06-20T11:21:58.9156033Z         },
2026-06-20T11:21:58.9156152Z         "impl": {
2026-06-20T11:21:58.9156266Z           "complete": true,
2026-06-20T11:21:58.9156387Z           "evidence": [
2026-06-20T11:21:58.9156608Z             {
2026-06-20T11:21:58.9156767Z               "path": "crates/spt-daemon/src/registryhost.rs",
2026-06-20T11:21:58.9156885Z               "line": 281
2026-06-20T11:21:58.9156984Z             },
2026-06-20T11:21:58.9157105Z             {
2026-06-20T11:21:58.9157246Z               "path": "crates/spt-daemon/src/registryhost.rs",
2026-06-20T11:21:58.9157367Z               "line": 651
2026-06-20T11:21:58.9157467Z             },
2026-06-20T11:21:58.9157571Z             {
2026-06-20T11:21:58.9157701Z               "path": "crates/spt/src/cli.rs",
2026-06-20T11:21:58.9157810Z               "line": 3399
2026-06-20T11:21:58.9158049Z             },
2026-06-20T11:21:58.9158158Z             {
2026-06-20T11:21:58.9158288Z               "path": "crates/spt/src/cli.rs",
2026-06-20T11:21:58.9158397Z               "line": 3709
2026-06-20T11:21:58.9158497Z             },
2026-06-20T11:21:58.9158602Z             {
2026-06-20T11:21:58.9158725Z               "path": "crates/spt/src/cli.rs",
2026-06-20T11:21:58.9158853Z               "line": 3728
2026-06-20T11:21:58.9159048Z             },
2026-06-20T11:21:58.9159161Z             {
2026-06-20T11:21:58.9159294Z               "path": "crates/spt/src/cli.rs",
2026-06-20T11:21:58.9159395Z               "line": 3792
2026-06-20T11:21:58.9159513Z             },
2026-06-20T11:21:58.9159619Z             {
2026-06-20T11:21:58.9159747Z               "path": "crates/spt/src/cli.rs",
2026-06-20T11:21:58.9159861Z               "line": 3834
2026-06-20T11:21:58.9159972Z             },
2026-06-20T11:21:58.9160081Z             {
2026-06-20T11:21:58.9160196Z               "path": "crates/spt/src/cli.rs",
2026-06-20T11:21:58.9160319Z               "line": 4023
2026-06-20T11:21:58.9160423Z             },
2026-06-20T11:21:58.9160530Z             {
2026-06-20T11:21:58.9160653Z               "path": "crates/spt/src/cli.rs",
2026-06-20T11:21:58.9160772Z               "line": 4093
2026-06-20T11:21:58.9160888Z             },
2026-06-20T11:21:58.9160996Z             {
2026-06-20T11:21:58.9161120Z               "path": "crates/spt/src/cli.rs",
2026-06-20T11:21:58.9161236Z               "line": 4317
2026-06-20T11:21:58.9161354Z             },
2026-06-20T11:21:58.9161484Z             {
2026-06-20T11:21:58.9161607Z               "path": "crates/spt/src/cli.rs",
2026-06-20T11:21:58.9161730Z               "line": 4961
2026-06-20T11:21:58.9161830Z             },
2026-06-20T11:21:58.9161943Z             {
2026-06-20T11:21:58.9162065Z               "path": "crates/spt/src/wansend.rs",
2026-06-20T11:21:58.9162186Z               "line": 418
2026-06-20T11:21:58.9162295Z             }
2026-06-20T11:21:58.9162399Z           ]
2026-06-20T11:21:58.9162519Z         },
2026-06-20T11:21:58.9162637Z         "int": {
2026-06-20T11:21:58.9162748Z           "complete": false,
2026-06-20T11:21:58.9162857Z           "evidence": []
2026-06-20T11:21:58.9162966Z         },
2026-06-20T11:21:58.9163072Z         "unit": {
2026-06-20T11:21:58.9163177Z           "complete": true,
2026-06-20T11:21:58.9163305Z           "evidence": [
2026-06-20T11:21:58.9163406Z             {
2026-06-20T11:21:58.9163553Z               "path": "crates/spt-daemon/src/registryhost.rs",
2026-06-20T11:21:58.9163668Z               "line": 1584
2026-06-20T11:21:58.9163774Z             },
2026-06-20T11:21:58.9163872Z             {
2026-06-20T11:21:58.9164007Z               "path": "crates/spt/src/cli.rs",
2026-06-20T11:21:58.9164122Z               "line": 9964
2026-06-20T11:21:58.9164221Z             },
2026-06-20T11:21:58.9164339Z             {
2026-06-20T11:21:58.9164458Z               "path": "crates/spt/src/cli.rs",
2026-06-20T11:21:58.9164580Z               "line": 10134
2026-06-20T11:21:58.9164680Z             },
2026-06-20T11:21:58.9164791Z             {
2026-06-20T11:21:58.9164919Z               "path": "crates/spt/src/cli.rs",
2026-06-20T11:21:58.9165029Z               "line": 10141
2026-06-20T11:21:58.9165143Z             },
2026-06-20T11:21:58.9165257Z             {
2026-06-20T11:21:58.9165382Z               "path": "crates/spt/src/cli.rs",
2026-06-20T11:21:58.9165590Z               "line": 10194
2026-06-20T11:21:58.9165706Z             },
2026-06-20T11:21:58.9165810Z             {
2026-06-20T11:21:58.9165939Z               "path": "crates/spt/src/cli.rs",
2026-06-20T11:21:58.9166058Z               "line": 10211
2026-06-20T11:21:58.9166173Z             },
2026-06-20T11:21:58.9166278Z             {
2026-06-20T11:21:58.9166397Z               "path": "crates/spt/src/cli.rs",
2026-06-20T11:21:58.9166516Z               "line": 10241
2026-06-20T11:21:58.9166627Z             },
2026-06-20T11:21:58.9166740Z             {
2026-06-20T11:21:58.9166879Z               "path": "crates/spt/src/cli.rs",
2026-06-20T11:21:58.9167078Z               "line": 10357
2026-06-20T11:21:58.9167187Z             },
2026-06-20T11:21:58.9167292Z             {
2026-06-20T11:21:58.9167416Z               "path": "crates/spt/src/cli.rs",
2026-06-20T11:21:58.9167526Z               "line": 10508
2026-06-20T11:21:58.9167627Z             }
2026-06-20T11:21:58.9167741Z           ]
2026-06-20T11:21:58.9167850Z         }
2026-06-20T11:21:58.9167956Z       }
2026-06-20T11:21:58.9168065Z     },
2026-06-20T11:21:58.9168175Z     {
2026-06-20T11:21:58.9168299Z       "id": "REQ-SUBNET-2",
2026-06-20T11:21:58.9168552Z       "title": "Guided join e2e: spt subnet join CLI initiator + always-on daemon pairing responder",
2026-06-20T11:21:58.9168670Z       "requiredStages": [
2026-06-20T11:21:58.9168779Z         "impl",
2026-06-20T11:21:58.9168895Z         "unit",
2026-06-20T11:21:58.9169080Z         "int"
2026-06-20T11:21:58.9169187Z       ],
2026-06-20T11:21:58.9169295Z       "stages": {
2026-06-20T11:21:58.9169408Z         "doc": {
2026-06-20T11:21:58.9169570Z           "complete": true,
2026-06-20T11:21:58.9169678Z           "evidence": [
2026-06-20T11:21:58.9169792Z             {
2026-06-20T11:21:58.9169964Z               "path": "docs/adr/0005-totp-seeded-spake2-node-pairing.md",
2026-06-20T11:21:58.9170078Z               "line": 60
2026-06-20T11:21:58.9170194Z             }
2026-06-20T11:21:58.9170303Z           ]
2026-06-20T11:21:58.9170407Z         },
2026-06-20T11:21:58.9170513Z         "impl": {
2026-06-20T11:21:58.9170636Z           "complete": true,
2026-06-20T11:21:58.9170756Z           "evidence": [
2026-06-20T11:21:58.9170866Z             {
2026-06-20T11:21:58.9171012Z               "path": "crates/spt-daemon/src/brain.rs",
2026-06-20T11:21:58.9171123Z               "line": 865
2026-06-20T11:21:58.9171242Z             },
2026-06-20T11:21:58.9171342Z             {
2026-06-20T11:21:58.9171486Z               "path": "crates/spt-daemon/src/broker.rs",
2026-06-20T11:21:58.9171595Z               "line": 1910
2026-06-20T11:21:58.9171705Z             },
2026-06-20T11:21:58.9171820Z             {
2026-06-20T11:21:58.9171952Z               "path": "crates/spt-daemon/src/nethost.rs",
2026-06-20T11:21:58.9172063Z               "line": 633
2026-06-20T11:21:58.9172172Z             },
2026-06-20T11:21:58.9172290Z             {
2026-06-20T11:21:58.9172433Z               "path": "crates/spt-daemon/src/nethost.rs",
2026-06-20T11:21:58.9172545Z               "line": 817
2026-06-20T11:21:58.9172659Z             },
2026-06-20T11:21:58.9172765Z             {
2026-06-20T11:21:58.9172912Z               "path": "crates/spt-daemon/src/pairhost.rs",
2026-06-20T11:21:58.9173032Z               "line": 26
2026-06-20T11:21:58.9173142Z             },
2026-06-20T11:21:58.9173255Z             {
2026-06-20T11:21:58.9173385Z               "path": "crates/spt-daemon/src/pairhost.rs",
2026-06-20T11:21:58.9173494Z               "line": 60
2026-06-20T11:21:58.9173594Z             },
2026-06-20T11:21:58.9173705Z             {
2026-06-20T11:21:58.9173837Z               "path": "crates/spt-daemon/src/pairhost.rs",
2026-06-20T11:21:58.9173962Z               "line": 168
2026-06-20T11:21:58.9174076Z             },
2026-06-20T11:21:58.9174175Z             {
2026-06-20T11:21:58.9174325Z               "path": "crates/spt-daemon/src/pairhost.rs",
2026-06-20T11:21:58.9174442Z               "line": 295
2026-06-20T11:21:58.9174664Z             },
2026-06-20T11:21:58.9174766Z             {
2026-06-20T11:21:58.9174914Z               "path": "crates/spt-daemon/src/pairhost.rs",
2026-06-20T11:21:58.9175027Z               "line": 417
2026-06-20T11:21:58.9175140Z             },
2026-06-20T11:21:58.9175259Z             {
2026-06-20T11:21:58.9175407Z               "path": "crates/spt-net/src/net/pairing/meet.rs",
2026-06-20T11:21:58.9175531Z               "line": 252
2026-06-20T11:21:58.9175637Z             },
2026-06-20T11:21:58.9175750Z             {
2026-06-20T11:21:58.9175884Z               "path": "crates/spt/src/cli.rs",
2026-06-20T11:21:58.9175994Z               "line": 3755
2026-06-20T11:21:58.9176209Z             },
2026-06-20T11:21:58.9176327Z             {
2026-06-20T11:21:58.9176461Z               "path": "crates/spt/src/cli.rs",
2026-06-20T11:21:58.9176586Z               "line": 4256
2026-06-20T11:21:58.9176695Z             },
2026-06-20T11:21:58.9176799Z             {
2026-06-20T11:21:58.9176924Z               "path": "crates/spt/src/cli.rs",
2026-06-20T11:21:58.9177048Z               "line": 4892
2026-06-20T11:21:58.9177158Z             }
2026-06-20T11:21:58.9177262Z           ]
2026-06-20T11:21:58.9177372Z         },
2026-06-20T11:21:58.9177487Z         "int": {
2026-06-20T11:21:58.9177619Z           "complete": true,
2026-06-20T11:21:58.9177728Z           "evidence": [
2026-06-20T11:21:58.9177853Z             {
2026-06-20T11:21:58.9178000Z               "path": "crates/spt-daemon/tests/pairjoin.rs",
2026-06-20T11:21:58.9178119Z               "line": 22
2026-06-20T11:21:58.9178239Z             },
2026-06-20T11:21:58.9178339Z             {
2026-06-20T11:21:58.9178487Z               "path": "crates/spt-daemon/tests/twohost.rs",
2026-06-20T11:21:58.9178611Z               "line": 645
2026-06-20T11:21:58.9178715Z             },
2026-06-20T11:21:58.9178816Z             {
2026-06-20T11:21:58.9179073Z               "path": "crates/spt-daemon/tests/twohost.rs",
2026-06-20T11:21:58.9179193Z               "line": 887
2026-06-20T11:21:58.9179302Z             }
2026-06-20T11:21:58.9179423Z           ]
2026-06-20T11:21:58.9179531Z         },
2026-06-20T11:21:58.9179636Z         "unit": {
2026-06-20T11:21:58.9179747Z           "complete": true,
2026-06-20T11:21:58.9179869Z           "evidence": [
2026-06-20T11:21:58.9179978Z             {
2026-06-20T11:21:58.9180116Z               "path": "crates/spt-daemon/src/pairhost.rs",
2026-06-20T11:21:58.9180234Z               "line": 586
2026-06-20T11:21:58.9180342Z             },
2026-06-20T11:21:58.9180449Z             {
2026-06-20T11:21:58.9180581Z               "path": "crates/spt/src/cli.rs",
2026-06-20T11:21:58.9180701Z               "line": 10004
2026-06-20T11:21:58.9180815Z             },
2026-06-20T11:21:58.9180924Z             {
2026-06-20T11:21:58.9181054Z               "path": "crates/spt/src/cli.rs",
2026-06-20T11:21:58.9181163Z               "line": 10715
2026-06-20T11:21:58.9181272Z             }
2026-06-20T11:21:58.9181388Z           ]
2026-06-20T11:21:58.9181497Z         }
2026-06-20T11:21:58.9181616Z       }
2026-06-20T11:21:58.9181722Z     },
2026-06-20T11:21:58.9181831Z     {
2026-06-20T11:21:58.9181950Z       "id": "REQ-SUBNET-3",
2026-06-20T11:21:58.9182236Z       "title": "Node labels: hostname-default, gossiped, addressable in @node qualifiers (refuse-on-ambiguity)",
2026-06-20T11:21:58.9182356Z       "requiredStages": [
2026-06-20T11:21:58.9182454Z         "impl",
2026-06-20T11:21:58.9182580Z         "unit"
2026-06-20T11:21:58.9182685Z       ],
2026-06-20T11:21:58.9182797Z       "stages": {
2026-06-20T11:21:58.9182912Z         "doc": {
2026-06-20T11:21:58.9183035Z           "complete": false,
2026-06-20T11:21:58.9183152Z           "evidence": []
2026-06-20T11:21:58.9183267Z         },
2026-06-20T11:21:58.9183387Z         "impl": {
2026-06-20T11:21:58.9183505Z           "complete": true,
2026-06-20T11:21:58.9183621Z           "evidence": [
2026-06-20T11:21:58.9183730Z             {
2026-06-20T11:21:58.9183883Z               "path": "crates/spt-daemon/src/registryhost.rs",
2026-06-20T11:21:58.9184101Z               "line": 152
2026-06-20T11:21:58.9184212Z             },
2026-06-20T11:21:58.9184326Z             {
2026-06-20T11:21:58.9184469Z               "path": "crates/spt-daemon/src/registryhost.rs",
2026-06-20T11:21:58.9184575Z               "line": 299
2026-06-20T11:21:58.9184683Z             },
2026-06-20T11:21:58.9184812Z             {
2026-06-20T11:21:58.9184956Z               "path": "crates/spt-daemon/src/registryhost.rs",
2026-06-20T11:21:58.9185084Z               "line": 443
2026-06-20T11:21:58.9185204Z             },
2026-06-20T11:21:58.9185312Z             {
2026-06-20T11:21:58.9185459Z               "path": "crates/spt-daemon/src/registryhost.rs",
2026-06-20T11:21:58.9185681Z               "line": 532
2026-06-20T11:21:58.9185796Z             },
2026-06-20T11:21:58.9185896Z             {
2026-06-20T11:21:58.9186043Z               "path": "crates/spt-net/src/net/registry.rs",
2026-06-20T11:21:58.9186169Z               "line": 125
2026-06-20T11:21:58.9186273Z             },
2026-06-20T11:21:58.9186387Z             {
2026-06-20T11:21:58.9186530Z               "path": "crates/spt-net/src/net/registry.rs",
2026-06-20T11:21:58.9186653Z               "line": 253
2026-06-20T11:21:58.9186755Z             },
2026-06-20T11:21:58.9186869Z             {
2026-06-20T11:21:58.9187012Z               "path": "crates/spt-net/src/net/registry.rs",
2026-06-20T11:21:58.9187127Z               "line": 264
2026-06-20T11:21:58.9187241Z             },
2026-06-20T11:21:58.9187346Z             {
2026-06-20T11:21:58.9187485Z               "path": "crates/spt-net/src/net/registry.rs",
2026-06-20T11:21:58.9187603Z               "line": 285
2026-06-20T11:21:58.9187709Z             },
2026-06-20T11:21:58.9187827Z             {
2026-06-20T11:21:58.9187951Z               "path": "crates/spt-net/src/net/registry.rs",
2026-06-20T11:21:58.9188062Z               "line": 621
2026-06-20T11:21:58.9188170Z             },
2026-06-20T11:21:58.9188279Z             {
2026-06-20T11:21:58.9188422Z               "path": "crates/spt-net/src/net/registry.rs",
2026-06-20T11:21:58.9188536Z               "line": 680
2026-06-20T11:21:58.9188641Z             },
2026-06-20T11:21:58.9188756Z             {
2026-06-20T11:21:58.9188889Z               "path": "crates/spt-net/src/net/replicate.rs",
2026-06-20T11:21:58.9189090Z               "line": 61
2026-06-20T11:21:58.9189213Z             },
2026-06-20T11:21:58.9189323Z             {
2026-06-20T11:21:58.9189481Z               "path": "crates/spt-net/src/net/replicate.rs",
2026-06-20T11:21:58.9189599Z               "line": 90
2026-06-20T11:21:58.9189705Z             },
2026-06-20T11:21:58.9189814Z             {
2026-06-20T11:21:58.9189953Z               "path": "crates/spt-net/src/net/replicate.rs",
2026-06-20T11:21:58.9190077Z               "line": 125
2026-06-20T11:21:58.9190186Z             },
2026-06-20T11:21:58.9190292Z             {
2026-06-20T11:21:58.9190429Z               "path": "crates/spt-store/src/hostlabel.rs",
2026-06-20T11:21:58.9190543Z               "line": 9
2026-06-20T11:21:58.9190657Z             },
2026-06-20T11:21:58.9190770Z             {
2026-06-20T11:21:58.9190898Z               "path": "crates/spt/src/cli.rs",
2026-06-20T11:21:58.9191018Z               "line": 4093
2026-06-20T11:21:58.9191127Z             },
2026-06-20T11:21:58.9191236Z             {
2026-06-20T11:21:58.9191366Z               "path": "crates/spt/src/wansend.rs",
2026-06-20T11:21:58.9191484Z               "line": 445
2026-06-20T11:21:58.9191600Z             }
2026-06-20T11:21:58.9191709Z           ]
2026-06-20T11:21:58.9191827Z         },
2026-06-20T11:21:58.9191938Z         "int": {
2026-06-20T11:21:58.9192062Z           "complete": false,
2026-06-20T11:21:58.9192181Z           "evidence": []
2026-06-20T11:21:58.9192291Z         },
2026-06-20T11:21:58.9192395Z         "unit": {
2026-06-20T11:21:58.9192505Z           "complete": true,
2026-06-20T11:21:58.9192625Z           "evidence": [
2026-06-20T11:21:58.9192730Z             {
2026-06-20T11:21:58.9192883Z               "path": "crates/spt-daemon/src/registryhost.rs",
2026-06-20T11:21:58.9193116Z               "line": 1356
2026-06-20T11:21:58.9193231Z             },
2026-06-20T11:21:58.9193330Z             {
2026-06-20T11:21:58.9193477Z               "path": "crates/spt-daemon/src/registryhost.rs",
2026-06-20T11:21:58.9193590Z               "line": 1713
2026-06-20T11:21:58.9193703Z             },
2026-06-20T11:21:58.9193808Z             {
2026-06-20T11:21:58.9193943Z               "path": "crates/spt-daemon/tests/dispatch.rs",
2026-06-20T11:21:58.9194070Z               "line": 892
2026-06-20T11:21:58.9194176Z             },
2026-06-20T11:21:58.9194295Z             {
2026-06-20T11:21:58.9194438Z               "path": "crates/spt-net/src/net/registry.rs",
2026-06-20T11:21:58.9194747Z               "line": 991
2026-06-20T11:21:58.9194853Z             },
2026-06-20T11:21:58.9194967Z             {
2026-06-20T11:21:58.9195120Z               "path": "crates/spt-net/src/net/registry.rs",
2026-06-20T11:21:58.9195243Z               "line": 1041
2026-06-20T11:21:58.9195353Z             },
2026-06-20T11:21:58.9195459Z             {
2026-06-20T11:21:58.9195606Z               "path": "crates/spt-net/src/net/registry.rs",
2026-06-20T11:21:58.9195727Z               "line": 1100
2026-06-20T11:21:58.9195840Z             },
2026-06-20T11:21:58.9195948Z             {
2026-06-20T11:21:58.9196096Z               "path": "crates/spt-net/src/net/replicate.rs",
2026-06-20T11:21:58.9196209Z               "line": 234
2026-06-20T11:21:58.9196327Z             },
2026-06-20T11:21:58.9196442Z             {
2026-06-20T11:21:58.9196589Z               "path": "crates/spt-store/src/hostlabel.rs",
2026-06-20T11:21:58.9196704Z               "line": 49
2026-06-20T11:21:58.9196819Z             },
2026-06-20T11:21:58.9196913Z             {
2026-06-20T11:21:58.9197043Z               "path": "crates/spt/src/cli.rs",
2026-06-20T11:21:58.9197162Z               "line": 10357
2026-06-20T11:21:58.9197271Z             },
2026-06-20T11:21:58.9197387Z             {
2026-06-20T11:21:58.9197515Z               "path": "crates/spt/src/cli.rs",
2026-06-20T11:21:58.9197629Z               "line": 10463
2026-06-20T11:21:58.9197735Z             },
2026-06-20T11:21:58.9197844Z             {
2026-06-20T11:21:58.9197973Z               "path": "crates/spt/src/cli.rs",
2026-06-20T11:21:58.9198082Z               "line": 10681
2026-06-20T11:21:58.9198177Z             }
2026-06-20T11:21:58.9198279Z           ]
2026-06-20T11:21:58.9198397Z         }
2026-06-20T11:21:58.9198511Z       }
2026-06-20T11:21:58.9198612Z     },
2026-06-20T11:21:58.9198731Z     {
2026-06-20T11:21:58.9198849Z       "id": "REQ-SUBNET-4",
2026-06-20T11:21:58.9199254Z       "title": "Subnet membership mutations elevation-gated (create = seed reveal; join = trust-boundary enrollment)",
2026-06-20T11:21:58.9199384Z       "requiredStages": [
2026-06-20T11:21:58.9199502Z         "impl",
2026-06-20T11:21:58.9199618Z         "unit"
2026-06-20T11:21:58.9199726Z       ],
2026-06-20T11:21:58.9199845Z       "stages": {
2026-06-20T11:21:58.9199956Z         "doc": {
2026-06-20T11:21:58.9200079Z           "complete": true,
2026-06-20T11:21:58.9200184Z           "evidence": [
2026-06-20T11:21:58.9200299Z             {
2026-06-20T11:21:58.9200474Z               "path": "docs/adr/0005-totp-seeded-spake2-node-pairing.md",
2026-06-20T11:21:58.9200586Z               "line": 60
2026-06-20T11:21:58.9200694Z             }
2026-06-20T11:21:58.9200794Z           ]
2026-06-20T11:21:58.9200905Z         },
2026-06-20T11:21:58.9201013Z         "impl": {
2026-06-20T11:21:58.9201131Z           "complete": true,
2026-06-20T11:21:58.9201255Z           "evidence": [
2026-06-20T11:21:58.9201363Z             {
2026-06-20T11:21:58.9201492Z               "path": "crates/spt/src/cli.rs",
2026-06-20T11:21:58.9201607Z               "line": 3399
2026-06-20T11:21:58.9201720Z             },
2026-06-20T11:21:58.9201821Z             {
2026-06-20T11:21:58.9201940Z               "path": "crates/spt/src/cli.rs",
2026-06-20T11:21:58.9202063Z               "line": 4859
2026-06-20T11:21:58.9202165Z             },
2026-06-20T11:21:58.9202387Z             {
2026-06-20T11:21:58.9202508Z               "path": "crates/spt/src/cli.rs",
2026-06-20T11:21:58.9202626Z               "line": 4892
2026-06-20T11:21:58.9202731Z             }
2026-06-20T11:21:58.9202846Z           ]
2026-06-20T11:21:58.9202955Z         },
2026-06-20T11:21:58.9203061Z         "int": {
2026-06-20T11:21:58.9203189Z           "complete": false,
2026-06-20T11:21:58.9203304Z           "evidence": []
2026-06-20T11:21:58.9203410Z         },
2026-06-20T11:21:58.9203514Z         "unit": {
2026-06-20T11:21:58.9203628Z           "complete": true,
2026-06-20T11:21:58.9203749Z           "evidence": [
2026-06-20T11:21:58.9203956Z             {
2026-06-20T11:21:58.9204080Z               "path": "crates/spt/src/cli.rs",
2026-06-20T11:21:58.9204188Z               "line": 10120
2026-06-20T11:21:58.9204291Z             },
2026-06-20T11:21:58.9204402Z             {
2026-06-20T11:21:58.9204531Z               "path": "crates/spt/src/cli.rs",
2026-06-20T11:21:58.9204659Z               "line": 10194
2026-06-20T11:21:58.9204765Z             }
2026-06-20T11:21:58.9204869Z           ]
2026-06-20T11:21:58.9204974Z         }
2026-06-20T11:21:58.9205089Z       }
2026-06-20T11:21:58.9205193Z     },
2026-06-20T11:21:58.9205308Z     {
2026-06-20T11:21:58.9205437Z       "id": "REQ-SUBNET-5",
2026-06-20T11:21:58.9206589Z       "title": "Per-subnet serve-state: spt subnet detach <NAME> [--save] / attach <NAME> [--save] — daemon keeps running, stops/starts advertising + connecting for that subnet (peer pump + responder selective); --save persists the startup default in daemon config; the all-attached banner gains per-subnet states (M8 decision 6, --save renamed from --auto per decision 25 session)",
2026-06-20T11:21:58.9206727Z       "requiredStages": [
2026-06-20T11:21:58.9206844Z         "impl",
2026-06-20T11:21:58.9206964Z         "unit",
2026-06-20T11:21:58.9207084Z         "int"
2026-06-20T11:21:58.9207197Z       ],
2026-06-20T11:21:58.9207318Z       "stages": {
2026-06-20T11:21:58.9207427Z         "doc": {
2026-06-20T11:21:58.9207540Z           "complete": false,
2026-06-20T11:21:58.9207665Z           "evidence": []
2026-06-20T11:21:58.9210616Z         },
2026-06-20T11:21:58.9210769Z         "impl": {
2026-06-20T11:21:58.9210896Z           "complete": true,
2026-06-20T11:21:58.9211020Z           "evidence": [
2026-06-20T11:21:58.9211131Z             {
2026-06-20T11:21:58.9211287Z               "path": "crates/spt-daemon/src/daemon.rs",
2026-06-20T11:21:58.9211403Z               "line": 128
2026-06-20T11:21:58.9211507Z             },
2026-06-20T11:21:58.9211616Z             {
2026-06-20T11:21:58.9211754Z               "path": "crates/spt-daemon/src/dispatch.rs",
2026-06-20T11:21:58.9211876Z               "line": 413
2026-06-20T11:21:58.9211984Z             },
2026-06-20T11:21:58.9212105Z             {
2026-06-20T11:21:58.9212243Z               "path": "crates/spt-daemon/src/pairhost.rs",
2026-06-20T11:21:58.9212362Z               "line": 74
2026-06-20T11:21:58.9212481Z             },
2026-06-20T11:21:58.9212595Z             {
2026-06-20T11:21:58.9212744Z               "path": "crates/spt-daemon/src/pump/mod.rs",
2026-06-20T11:21:58.9212853Z               "line": 332
2026-06-20T11:21:58.9212967Z             },
2026-06-20T11:21:58.9213064Z             {
2026-06-20T11:21:58.9213215Z               "path": "crates/spt-daemon/src/pump/mod.rs",
2026-06-20T11:21:58.9213335Z               "line": 621
2026-06-20T11:21:58.9213444Z             },
2026-06-20T11:21:58.9213549Z             {
2026-06-20T11:21:58.9213703Z               "path": "crates/spt-daemon/src/serveprobe.rs",
2026-06-20T11:21:58.9213821Z               "line": 31
2026-06-20T11:21:58.9213921Z             },
2026-06-20T11:21:58.9214041Z             {
2026-06-20T11:21:58.9214198Z               "path": "crates/spt-daemon/src/serveprobe.rs",
2026-06-20T11:21:58.9214304Z               "line": 50
2026-06-20T11:21:58.9214421Z             },
2026-06-20T11:21:58.9214530Z             {
2026-06-20T11:21:58.9214682Z               "path": "crates/spt-daemon/src/serveprobe.rs",
2026-06-20T11:21:58.9214958Z               "line": 69
2026-06-20T11:21:58.9215067Z             },
2026-06-20T11:21:58.9215180Z             {
2026-06-20T11:21:58.9215315Z               "path": "crates/spt-daemon/src/serveprobe.rs",
2026-06-20T11:21:58.9215438Z               "line": 113
2026-06-20T11:21:58.9215549Z             },
2026-06-20T11:21:58.9215663Z             {
2026-06-20T11:21:58.9215819Z               "path": "crates/spt-net/src/net/serveprobe.rs",
2026-06-20T11:21:58.9215935Z               "line": 25
2026-06-20T11:21:58.9216049Z             },
2026-06-20T11:21:58.9216154Z             {
2026-06-20T11:21:58.9216312Z               "path": "crates/spt-net/src/net/serveprobe.rs",
2026-06-20T11:21:58.9216522Z               "line": 34
2026-06-20T11:21:58.9216641Z             },
2026-06-20T11:21:58.9216750Z             {
2026-06-20T11:21:58.9216894Z               "path": "crates/spt-store/src/attachment.rs",
2026-06-20T11:21:58.9217012Z               "line": 17
2026-06-20T11:21:58.9217125Z             },
2026-06-20T11:21:58.9217225Z             {
2026-06-20T11:21:58.9217357Z               "path": "crates/spt/src/cli.rs",
2026-06-20T11:21:58.9217481Z               "line": 4817
2026-06-20T11:21:58.9217591Z             },
2026-06-20T11:21:58.9217700Z             {
2026-06-20T11:21:58.9217839Z               "path": "crates/spt/src/wansend.rs",
2026-06-20T11:21:58.9217944Z               "line": 419
2026-06-20T11:21:58.9218052Z             }
2026-06-20T11:21:58.9218163Z           ]
2026-06-20T11:21:58.9218268Z         },
2026-06-20T11:21:58.9218386Z         "int": {
2026-06-20T11:21:58.9218507Z           "complete": true,
2026-06-20T11:21:58.9218621Z           "evidence": [
2026-06-20T11:21:58.9218735Z             {
2026-06-20T11:21:58.9218874Z               "path": "crates/spt-daemon/tests/dispatch.rs",
2026-06-20T11:21:58.9219079Z               "line": 821
2026-06-20T11:21:58.9219193Z             }
2026-06-20T11:21:58.9219307Z           ]
2026-06-20T11:21:58.9219414Z         },
2026-06-20T11:21:58.9219541Z         "unit": {
2026-06-20T11:21:58.9219660Z           "complete": true,
2026-06-20T11:21:58.9219790Z           "evidence": [
2026-06-20T11:21:58.9219902Z             {
2026-06-20T11:21:58.9220060Z               "path": "crates/spt-daemon/src/config.rs",
2026-06-20T11:21:58.9220180Z               "line": 341
2026-06-20T11:21:58.9220278Z             },
2026-06-20T11:21:58.9220398Z             {
2026-06-20T11:21:58.9220542Z               "path": "crates/spt-daemon/src/pump/mod.rs",
2026-06-20T11:21:58.9220655Z               "line": 1115
2026-06-20T11:21:58.9220752Z             },
2026-06-20T11:21:58.9220857Z             {
2026-06-20T11:21:58.9221009Z               "path": "crates/spt-daemon/src/serveprobe.rs",
2026-06-20T11:21:58.9221118Z               "line": 151
2026-06-20T11:21:58.9221227Z             },
2026-06-20T11:21:58.9221338Z             {
2026-06-20T11:21:58.9221480Z               "path": "crates/spt-net/src/net/serveprobe.rs",
2026-06-20T11:21:58.9221590Z               "line": 61
2026-06-20T11:21:58.9221706Z             },
2026-06-20T11:21:58.9221818Z             {
2026-06-20T11:21:58.9221958Z               "path": "crates/spt-store/src/attachment.rs",
2026-06-20T11:21:58.9222077Z               "line": 111
2026-06-20T11:21:58.9222185Z             },
2026-06-20T11:21:58.9222309Z             {
2026-06-20T11:21:58.9222450Z               "path": "crates/spt-store/src/attachment.rs",
2026-06-20T11:21:58.9222563Z               "line": 138
2026-06-20T11:21:58.9222679Z             },
2026-06-20T11:21:58.9222788Z             {
2026-06-20T11:21:58.9222936Z               "path": "crates/spt-store/src/attachment.rs",
2026-06-20T11:21:58.9223051Z               "line": 148
2026-06-20T11:21:58.9223165Z             },
2026-06-20T11:21:58.9223285Z             {
2026-06-20T11:21:58.9223413Z               "path": "crates/spt/src/cli.rs",
2026-06-20T11:21:58.9223532Z               "line": 10021
2026-06-20T11:21:58.9223633Z             }
2026-06-20T11:21:58.9223742Z           ]
2026-06-20T11:21:58.9223948Z         }
2026-06-20T11:21:58.9224062Z       }
2026-06-20T11:21:58.9224176Z     },
2026-06-20T11:21:58.9224282Z     {
2026-06-20T11:21:58.9224405Z       "id": "REQ-SUBNET-6",
2026-06-20T11:21:58.9225123Z       "title": "Trust lifecycle verbs, elevation-gated: spt subnet leave <NAME> (membership exit) and spt subnet prune <node> (removes a dead identity's trust + registry rows, killing its dead dials; trust mutation = security surface, REQ-PAIR-6 gate machinery) (M8 decisions 6-7)",
2026-06-20T11:21:58.9225247Z       "requiredStages": [
2026-06-20T11:21:58.9225355Z         "impl",
2026-06-20T11:21:58.9225470Z         "unit"
2026-06-20T11:21:58.9225570Z       ],
2026-06-20T11:21:58.9225779Z       "stages": {
2026-06-20T11:21:58.9225890Z         "doc": {
2026-06-20T11:21:58.9226013Z           "complete": false,
2026-06-20T11:21:58.9226133Z           "evidence": []
2026-06-20T11:21:58.9226247Z         },
2026-06-20T11:21:58.9226371Z         "impl": {
2026-06-20T11:21:58.9226482Z           "complete": true,
2026-06-20T11:21:58.9226605Z           "evidence": [
2026-06-20T11:21:58.9226719Z             {
2026-06-20T11:21:58.9226867Z               "path": "crates/spt-net/src/net/registry.rs",
2026-06-20T11:21:58.9226986Z               "line": 254
2026-06-20T11:21:58.9227087Z             },
2026-06-20T11:21:58.9227196Z             {
2026-06-20T11:21:58.9227329Z               "path": "crates/spt/src/cli.rs",
2026-06-20T11:21:58.9227441Z               "line": 4475
2026-06-20T11:21:58.9227544Z             },
2026-06-20T11:21:58.9227652Z             {
2026-06-20T11:21:58.9227781Z               "path": "crates/spt/src/cli.rs",
2026-06-20T11:21:58.9227898Z               "line": 4492
2026-06-20T11:21:58.9228012Z             },
2026-06-20T11:21:58.9228128Z             {
2026-06-20T11:21:58.9228256Z               "path": "crates/spt/src/cli.rs",
2026-06-20T11:21:58.9228375Z               "line": 4545
2026-06-20T11:21:58.9228476Z             },
2026-06-20T11:21:58.9228585Z             {
2026-06-20T11:21:58.9228710Z               "path": "crates/spt/src/cli.rs",
2026-06-20T11:21:58.9228819Z               "line": 4568
2026-06-20T11:21:58.9228923Z             }
2026-06-20T11:21:58.9229119Z           ]
2026-06-20T11:21:58.9229233Z         },
2026-06-20T11:21:58.9229349Z         "int": {
2026-06-20T11:21:58.9229467Z           "complete": false,
2026-06-20T11:21:58.9229586Z           "evidence": []
2026-06-20T11:21:58.9229696Z         },
2026-06-20T11:21:58.9229814Z         "unit": {
2026-06-20T11:21:58.9229915Z           "complete": true,
2026-06-20T11:21:58.9230035Z           "evidence": [
2026-06-20T11:21:58.9230139Z             {
2026-06-20T11:21:58.9230264Z               "path": "crates/spt/src/cli.rs",
2026-06-20T11:21:58.9230374Z               "line": 10035
2026-06-20T11:21:58.9230486Z             },
2026-06-20T11:21:58.9230591Z             {
2026-06-20T11:21:58.9230716Z               "path": "crates/spt/src/cli.rs",
2026-06-20T11:21:58.9230829Z               "line": 10068
2026-06-20T11:21:58.9230945Z             },
2026-06-20T11:21:58.9231054Z             {
2026-06-20T11:21:58.9231172Z               "path": "crates/spt/src/cli.rs",
2026-06-20T11:21:58.9231278Z               "line": 10077
2026-06-20T11:21:58.9231393Z             }
2026-06-20T11:21:58.9231506Z           ]
2026-06-20T11:21:58.9231627Z         }
2026-06-20T11:21:58.9231726Z       }
2026-06-20T11:21:58.9231850Z     },
2026-06-20T11:21:58.9231960Z     {
2026-06-20T11:21:58.9232089Z       "id": "REQ-SUBNET-7",
2026-06-20T11:21:58.9233768Z       "title": "Per-machine re-pair trust overwrite: registry rows carry a hashed stable machine identifier (OS machine id /etc/machine-id|MachineGuid, domain-separated SHA-256 before gossip, spt-minted persisted UUID fallback; additive serde-default field — old rows parse clean); a COMPLETED pairing ceremony presenting the same node label AND machine id as an existing trusted row evicts the superseded identity's trust + registry rows on the seed-holder and replicates the eviction; a gossiped claim alone never evicts trust (M8 decisions 13, 22)",
2026-06-20T11:21:58.9234020Z       "requiredStages": [
2026-06-20T11:21:58.9234131Z         "impl",
2026-06-20T11:21:58.9234245Z         "unit"
2026-06-20T11:21:58.9234359Z       ],
2026-06-20T11:21:58.9234479Z       "stages": {
2026-06-20T11:21:58.9234583Z         "doc": {
2026-06-20T11:21:58.9234707Z           "complete": false,
2026-06-20T11:21:58.9234823Z           "evidence": []
2026-06-20T11:21:58.9234941Z         },
2026-06-20T11:21:58.9235056Z         "impl": {
2026-06-20T11:21:58.9235171Z           "complete": true,
2026-06-20T11:21:58.9235280Z           "evidence": [
2026-06-20T11:21:58.9235381Z             {
2026-06-20T11:21:58.9235528Z               "path": "crates/spt-daemon/src/machineid.rs",
2026-06-20T11:21:58.9235741Z               "line": 17
2026-06-20T11:21:58.9235850Z             },
2026-06-20T11:21:58.9235953Z             {
2026-06-20T11:21:58.9236097Z               "path": "crates/spt-daemon/src/pairhost.rs",
2026-06-20T11:21:58.9236220Z               "line": 103
2026-06-20T11:21:58.9236330Z             },
2026-06-20T11:21:58.9236450Z             {
2026-06-20T11:21:58.9236592Z               "path": "crates/spt-daemon/src/pairhost.rs",
2026-06-20T11:21:58.9236708Z               "line": 312
2026-06-20T11:21:58.9236822Z             },
2026-06-20T11:21:58.9236931Z             {
2026-06-20T11:21:58.9237089Z               "path": "crates/spt-daemon/src/pump/registry.rs",
2026-06-20T11:21:58.9237202Z               "line": 131
2026-06-20T11:21:58.9237318Z             },
2026-06-20T11:21:58.9237427Z             {
2026-06-20T11:21:58.9237575Z               "path": "crates/spt-daemon/src/registryhost.rs",
2026-06-20T11:21:58.9237695Z               "line": 160
2026-06-20T11:21:58.9237813Z             },
2026-06-20T11:21:58.9237928Z             {
2026-06-20T11:21:58.9238071Z               "path": "crates/spt-daemon/src/registryhost.rs",
2026-06-20T11:21:58.9238189Z               "line": 447
2026-06-20T11:21:58.9238284Z             },
2026-06-20T11:21:58.9238393Z             {
2026-06-20T11:21:58.9238543Z               "path": "crates/spt-daemon/src/registryhost.rs",
2026-06-20T11:21:58.9238654Z               "line": 670
2026-06-20T11:21:58.9238768Z             },
2026-06-20T11:21:58.9238867Z             {
2026-06-20T11:21:58.9239102Z               "path": "crates/spt-daemon/src/registryhost.rs",
2026-06-20T11:21:58.9239221Z               "line": 710
2026-06-20T11:21:58.9239336Z             },
2026-06-20T11:21:58.9239459Z             {
2026-06-20T11:21:58.9239604Z               "path": "crates/spt-daemon/src/registryhost.rs",
2026-06-20T11:21:58.9239717Z               "line": 766
2026-06-20T11:21:58.9239831Z             },
2026-06-20T11:21:58.9239937Z             {
2026-06-20T11:21:58.9240098Z               "path": "crates/spt-net/src/net/pairing/wire.rs",
2026-06-20T11:21:58.9240214Z               "line": 136
2026-06-20T11:21:58.9240322Z             },
2026-06-20T11:21:58.9240427Z             {
2026-06-20T11:21:58.9240572Z               "path": "crates/spt-net/src/net/registry.rs",
2026-06-20T11:21:58.9240685Z               "line": 139
2026-06-20T11:21:58.9240790Z             }
2026-06-20T11:21:58.9240905Z           ]
2026-06-20T11:21:58.9241004Z         },
2026-06-20T11:21:58.9241122Z         "int": {
2026-06-20T11:21:58.9241238Z           "complete": false,
2026-06-20T11:21:58.9241352Z           "evidence": []
2026-06-20T11:21:58.9241461Z         },
2026-06-20T11:21:58.9241581Z         "unit": {
2026-06-20T11:21:58.9241704Z           "complete": true,
2026-06-20T11:21:58.9241815Z           "evidence": [
2026-06-20T11:21:58.9241929Z             {
2026-06-20T11:21:58.9242071Z               "path": "crates/spt-daemon/src/machineid.rs",
2026-06-20T11:21:58.9242191Z               "line": 136
2026-06-20T11:21:58.9242301Z             },
2026-06-20T11:21:58.9242410Z             {
2026-06-20T11:21:58.9242554Z               "path": "crates/spt-daemon/src/machineid.rs",
2026-06-20T11:21:58.9242663Z               "line": 156
2026-06-20T11:21:58.9242769Z             },
2026-06-20T11:21:58.9242873Z             {
2026-06-20T11:21:58.9243136Z               "path": "crates/spt-daemon/src/registryhost.rs",
2026-06-20T11:21:58.9243244Z               "line": 987
2026-06-20T11:21:58.9243362Z             },
2026-06-20T11:21:58.9243515Z             {
2026-06-20T11:21:58.9243670Z               "path": "crates/spt-daemon/src/registryhost.rs",
2026-06-20T11:21:58.9243795Z               "line": 1009
2026-06-20T11:21:58.9243904Z             },
2026-06-20T11:21:58.9244008Z             {
2026-06-20T11:21:58.9244157Z               "path": "crates/spt-net/src/net/pairing/wire.rs",
2026-06-20T11:21:58.9244280Z               "line": 1419
2026-06-20T11:21:58.9244381Z             },
2026-06-20T11:21:58.9244581Z             {
2026-06-20T11:21:58.9244725Z               "path": "crates/spt-net/src/net/registry.rs",
2026-06-20T11:21:58.9244824Z               "line": 1036
2026-06-20T11:21:58.9244933Z             }
2026-06-20T11:21:58.9245039Z           ]
2026-06-20T11:21:58.9245143Z         }
2026-06-20T11:21:58.9245253Z       }
2026-06-20T11:21:58.9245364Z     },
2026-06-20T11:21:58.9245477Z     {
2026-06-20T11:21:58.9245592Z       "id": "REQ-SUBNET-8",
2026-06-20T11:21:58.9246719Z       "title": "Status render honesty: zero-subnet text is daemon-aware ('No subnets registered — this node is standalone.' + daemon-running-dependent blurb, never implying messaging works while the daemon is down); hint footer prints on bare spt subnet only (status drops it); a stalled pump is surfaced in subnet status, never rendered implied-healthy (M8 decisions 11-12, 23)",
2026-06-20T11:21:58.9246852Z       "requiredStages": [
2026-06-20T11:21:58.9246958Z         "impl",
2026-06-20T11:21:58.9247068Z         "unit"
2026-06-20T11:21:58.9247186Z       ],
2026-06-20T11:21:58.9247306Z       "stages": {
2026-06-20T11:21:58.9247401Z         "doc": {
2026-06-20T11:21:58.9247510Z           "complete": false,
2026-06-20T11:21:58.9247635Z           "evidence": []
2026-06-20T11:21:58.9247739Z         },
2026-06-20T11:21:58.9247863Z         "impl": {
2026-06-20T11:21:58.9247973Z           "complete": true,
2026-06-20T11:21:58.9248091Z           "evidence": [
2026-06-20T11:21:58.9248198Z             {
2026-06-20T11:21:58.9248335Z               "path": "crates/spt/src/cli.rs",
2026-06-20T11:21:58.9248454Z               "line": 3835
2026-06-20T11:21:58.9248570Z             },
2026-06-20T11:21:58.9248673Z             {
2026-06-20T11:21:58.9248801Z               "path": "crates/spt/src/cli.rs",
2026-06-20T11:21:58.9248911Z               "line": 3864
2026-06-20T11:21:58.9249103Z             },
2026-06-20T11:21:58.9249214Z             {
2026-06-20T11:21:58.9249333Z               "path": "crates/spt/src/cli.rs",
2026-06-20T11:21:58.9249457Z               "line": 3881
2026-06-20T11:21:58.9249577Z             },
2026-06-20T11:21:58.9249676Z             {
2026-06-20T11:21:58.9249805Z               "path": "crates/spt/src/cli.rs",
2026-06-20T11:21:58.9249910Z               "line": 3904
2026-06-20T11:21:58.9250024Z             },
2026-06-20T11:21:58.9250135Z             {
2026-06-20T11:21:58.9250268Z               "path": "crates/spt/src/cli.rs",
2026-06-20T11:21:58.9250386Z               "line": 4318
2026-06-20T11:21:58.9250488Z             }
2026-06-20T11:21:58.9250597Z           ]
2026-06-20T11:21:58.9250701Z         },
2026-06-20T11:21:58.9250808Z         "int": {
2026-06-20T11:21:58.9250925Z           "complete": false,
2026-06-20T11:21:58.9251035Z           "evidence": []
2026-06-20T11:21:58.9251141Z         },
2026-06-20T11:21:58.9251259Z         "unit": {
2026-06-20T11:21:58.9251380Z           "complete": true,
2026-06-20T11:21:58.9251494Z           "evidence": [
2026-06-20T11:21:58.9251592Z             {
2026-06-20T11:21:58.9251725Z               "path": "crates/spt/src/cli.rs",
2026-06-20T11:21:58.9251832Z               "line": 10225
2026-06-20T11:21:58.9251954Z             },
2026-06-20T11:21:58.9252055Z             {
2026-06-20T11:21:58.9252174Z               "path": "crates/spt/src/cli.rs",
2026-06-20T11:21:58.9252283Z               "line": 10241
2026-06-20T11:21:58.9252399Z             }
2026-06-20T11:21:58.9252626Z           ]
2026-06-20T11:21:58.9252737Z         }
2026-06-20T11:21:58.9252841Z       }
2026-06-20T11:21:58.9252941Z     },
2026-06-20T11:21:58.9253052Z     {
2026-06-20T11:21:58.9253166Z       "id": "REQ-TERM-1",
2026-06-20T11:21:58.9253367Z       "title": "Process-supervisor terminal wrapper hosting broker PTYs",
2026-06-20T11:21:58.9253490Z       "requiredStages": [
2026-06-20T11:21:58.9253595Z         "impl",
2026-06-20T11:21:58.9253710Z         "unit"
2026-06-20T11:21:58.9253814Z       ],
2026-06-20T11:21:58.9253927Z       "stages": {
2026-06-20T11:21:58.9254032Z         "doc": {
2026-06-20T11:21:58.9254159Z           "complete": false,
2026-06-20T11:21:58.9254374Z           "evidence": []
2026-06-20T11:21:58.9254479Z         },
2026-06-20T11:21:58.9254597Z         "impl": {
2026-06-20T11:21:58.9254713Z           "complete": true,
2026-06-20T11:21:58.9254821Z           "evidence": [
2026-06-20T11:21:58.9254927Z             {
2026-06-20T11:21:58.9255075Z               "path": "crates/spt-term/src/pty.rs",
2026-06-20T11:21:58.9255188Z               "line": 59
2026-06-20T11:21:58.9255294Z             },
2026-06-20T11:21:58.9255399Z             {
2026-06-20T11:21:58.9255528Z               "path": "crates/spt-term/src/pty.rs",
2026-06-20T11:21:58.9255647Z               "line": 234
2026-06-20T11:21:58.9255752Z             },
2026-06-20T11:21:58.9255866Z             {
2026-06-20T11:21:58.9256014Z               "path": "crates/spt-term/src/surface.rs",
2026-06-20T11:21:58.9256114Z               "line": 100
2026-06-20T11:21:58.9256225Z             }
2026-06-20T11:21:58.9256324Z           ]
2026-06-20T11:21:58.9256438Z         },
2026-06-20T11:21:58.9256549Z         "int": {
2026-06-20T11:21:58.9256676Z           "complete": false,
2026-06-20T11:21:58.9256795Z           "evidence": []
2026-06-20T11:21:58.9256909Z         },
2026-06-20T11:21:58.9257021Z         "unit": {
2026-06-20T11:21:58.9257130Z           "complete": true,
2026-06-20T11:21:58.9257251Z           "evidence": [
2026-06-20T11:21:58.9257360Z             {
2026-06-20T11:21:58.9257513Z               "path": "crates/spt-term/tests/surface.rs",
2026-06-20T11:21:58.9257637Z               "line": 24
2026-06-20T11:21:58.9257741Z             },
2026-06-20T11:21:58.9257847Z             {
2026-06-20T11:21:58.9257990Z               "path": "crates/spt-term/tests/surface.rs",
2026-06-20T11:21:58.9258108Z               "line": 56
2026-06-20T11:21:58.9258228Z             }
2026-06-20T11:21:58.9258328Z           ]
2026-06-20T11:21:58.9258443Z         }
2026-06-20T11:21:58.9258548Z       }
2026-06-20T11:21:58.9258666Z     },
2026-06-20T11:21:58.9258772Z     {
2026-06-20T11:21:58.9258900Z       "id": "REQ-TERM-2",
2026-06-20T11:21:58.9259163Z       "title": "session-surface abstraction; send-keys + send-line injection",
2026-06-20T11:21:58.9259290Z       "requiredStages": [
2026-06-20T11:21:58.9259418Z         "impl",
2026-06-20T11:21:58.9259532Z         "unit"
2026-06-20T11:21:58.9259640Z       ],
2026-06-20T11:21:58.9259750Z       "stages": {
2026-06-20T11:21:58.9259856Z         "doc": {
2026-06-20T11:21:58.9259974Z           "complete": false,
2026-06-20T11:21:58.9260080Z           "evidence": []
2026-06-20T11:21:58.9260185Z         },
2026-06-20T11:21:58.9260289Z         "impl": {
2026-06-20T11:21:58.9260409Z           "complete": true,
2026-06-20T11:21:58.9260528Z           "evidence": [
2026-06-20T11:21:58.9260637Z             {
2026-06-20T11:21:58.9260762Z               "path": "crates/spt-term/src/surface.rs",
2026-06-20T11:21:58.9260880Z               "line": 117
2026-06-20T11:21:58.9260995Z             },
2026-06-20T11:21:58.9261104Z             {
2026-06-20T11:21:58.9261247Z               "path": "crates/spt-term/src/surface.rs",
2026-06-20T11:21:58.9261358Z               "line": 127
2026-06-20T11:21:58.9261476Z             }
2026-06-20T11:21:58.9261586Z           ]
2026-06-20T11:21:58.9261697Z         },
2026-06-20T11:21:58.9261819Z         "int": {
2026-06-20T11:21:58.9261940Z           "complete": false,
2026-06-20T11:21:58.9262167Z           "evidence": []
2026-06-20T11:21:58.9262272Z         },
2026-06-20T11:21:58.9262377Z         "unit": {
2026-06-20T11:21:58.9262486Z           "complete": true,
2026-06-20T11:21:58.9262610Z           "evidence": [
2026-06-20T11:21:58.9262720Z             {
2026-06-20T11:21:58.9262853Z               "path": "crates/spt-term/tests/inject.rs",
2026-06-20T11:21:58.9262973Z               "line": 46
2026-06-20T11:21:58.9263083Z             },
2026-06-20T11:21:58.9263206Z             {
2026-06-20T11:21:58.9263340Z               "path": "crates/spt-term/tests/inject.rs",
2026-06-20T11:21:58.9263449Z               "line": 77
2026-06-20T11:21:58.9263569Z             }
2026-06-20T11:21:58.9263793Z           ]
2026-06-20T11:21:58.9263904Z         }
2026-06-20T11:21:58.9264003Z       }
2026-06-20T11:21:58.9264122Z     },
2026-06-20T11:21:58.9264228Z     {
2026-06-20T11:21:58.9264350Z       "id": "REQ-TERM-3",
2026-06-20T11:21:58.9264521Z       "title": "Byte-stream remote terminal streaming for v1",
2026-06-20T11:21:58.9264644Z       "requiredStages": [
2026-06-20T11:21:58.9264762Z         "impl",
2026-06-20T11:21:58.9264867Z         "unit"
2026-06-20T11:21:58.9264978Z       ],
2026-06-20T11:21:58.9265095Z       "stages": {
2026-06-20T11:21:58.9265225Z         "doc": {
2026-06-20T11:21:58.9265344Z           "complete": false,
2026-06-20T11:21:58.9265458Z           "evidence": []
2026-06-20T11:21:58.9265573Z         },
2026-06-20T11:21:58.9265687Z         "impl": {
2026-06-20T11:21:58.9265807Z           "complete": true,
2026-06-20T11:21:58.9265926Z           "evidence": [
2026-06-20T11:21:58.9266040Z             {
2026-06-20T11:21:58.9266174Z               "path": "crates/spt-term/src/stream.rs",
2026-06-20T11:21:58.9266288Z               "line": 71
2026-06-20T11:21:58.9266402Z             }
2026-06-20T11:21:58.9266508Z           ]
2026-06-20T11:21:58.9266621Z         },
2026-06-20T11:21:58.9266732Z         "int": {
2026-06-20T11:21:58.9266856Z           "complete": false,
2026-06-20T11:21:58.9266975Z           "evidence": []
2026-06-20T11:21:58.9267075Z         },
2026-06-20T11:21:58.9267194Z         "unit": {
2026-06-20T11:21:58.9267312Z           "complete": true,
2026-06-20T11:21:58.9267436Z           "evidence": [
2026-06-20T11:21:58.9267539Z             {
2026-06-20T11:21:58.9267676Z               "path": "crates/spt-term/tests/stream.rs",
2026-06-20T11:21:58.9267787Z               "line": 37
2026-06-20T11:21:58.9267896Z             },
2026-06-20T11:21:58.9268006Z             {
2026-06-20T11:21:58.9268140Z               "path": "crates/spt-term/tests/stream.rs",
2026-06-20T11:21:58.9268258Z               "line": 67
2026-06-20T11:21:58.9268364Z             }
2026-06-20T11:21:58.9268483Z           ]
2026-06-20T11:21:58.9268587Z         }
2026-06-20T11:21:58.9268683Z       }
2026-06-20T11:21:58.9268788Z     },
2026-06-20T11:21:58.9268902Z     {
2026-06-20T11:21:58.9269141Z       "id": "REQ-TERM-4",
2026-06-20T11:21:58.9269628Z       "title": "Live activity buffer (session digest): projection of normalized session logs, snapshot-pull (spt endpoint digest) + structured-delta-stream contract + api digest-entry push",
2026-06-20T11:21:58.9269757Z       "requiredStages": [
2026-06-20T11:21:58.9269869Z         "impl",
2026-06-20T11:21:58.9269979Z         "unit",
2026-06-20T11:21:58.9270097Z         "int"
2026-06-20T11:21:58.9270200Z       ],
2026-06-20T11:21:58.9270315Z       "stages": {
2026-06-20T11:21:58.9270430Z         "doc": {
2026-06-20T11:21:58.9270553Z           "complete": false,
2026-06-20T11:21:58.9270697Z           "evidence": []
2026-06-20T11:21:58.9270810Z         },
2026-06-20T11:21:58.9270926Z         "impl": {
2026-06-20T11:21:58.9271030Z           "complete": true,
2026-06-20T11:21:58.9271158Z           "evidence": [
2026-06-20T11:21:58.9271265Z             {
2026-06-20T11:21:58.9271417Z               "path": "crates/spt-daemon/src/digest.rs",
2026-06-20T11:21:58.9271545Z               "line": 37
2026-06-20T11:21:58.9271651Z             },
2026-06-20T11:21:58.9271760Z             {
2026-06-20T11:21:58.9272012Z               "path": "crates/spt-daemon/src/digesthub.rs",
2026-06-20T11:21:58.9272132Z               "line": 25
2026-06-20T11:21:58.9272243Z             },
2026-06-20T11:21:58.9272350Z             {
2026-06-20T11:21:58.9272485Z               "path": "crates/spt-daemon/src/digesthub.rs",
2026-06-20T11:21:58.9272600Z               "line": 114
2026-06-20T11:21:58.9272717Z             },
2026-06-20T11:21:58.9272832Z             {
2026-06-20T11:21:58.9272976Z               "path": "crates/spt-daemon/src/digesthub.rs",
2026-06-20T11:21:58.9273094Z               "line": 267
2026-06-20T11:21:58.9273194Z             },
2026-06-20T11:21:58.9273314Z             {
2026-06-20T11:21:58.9273552Z               "path": "crates/spt-daemon/src/digesthub.rs",
2026-06-20T11:21:58.9273671Z               "line": 289
2026-06-20T11:21:58.9273786Z             },
2026-06-20T11:21:58.9273900Z             {
2026-06-20T11:21:58.9274047Z               "path": "crates/spt-daemon/src/digesthub.rs",
2026-06-20T11:21:58.9274153Z               "line": 307
2026-06-20T11:21:58.9274276Z             },
2026-06-20T11:21:58.9274386Z             {
2026-06-20T11:21:58.9274530Z               "path": "crates/spt-store/src/history.rs",
2026-06-20T11:21:58.9274638Z               "line": 33
2026-06-20T11:21:58.9274749Z             },
2026-06-20T11:21:58.9274854Z             {
2026-06-20T11:21:58.9274995Z               "path": "crates/spt-term/src/projection.rs",
2026-06-20T11:21:58.9275120Z               "line": 52
2026-06-20T11:21:58.9275227Z             },
2026-06-20T11:21:58.9275345Z             {
2026-06-20T11:21:58.9275490Z               "path": "crates/spt-term/src/projection.rs",
2026-06-20T11:21:58.9275608Z               "line": 180
2026-06-20T11:21:58.9275727Z             },
2026-06-20T11:21:58.9275838Z             {
2026-06-20T11:21:58.9275979Z               "path": "crates/spt-term/src/projection.rs",
2026-06-20T11:21:58.9276090Z               "line": 190
2026-06-20T11:21:58.9276214Z             },
2026-06-20T11:21:58.9276323Z             {
2026-06-20T11:21:58.9276472Z               "path": "crates/spt-term/src/projection.rs",
2026-06-20T11:21:58.9276590Z               "line": 250
2026-06-20T11:21:58.9276701Z             },
2026-06-20T11:21:58.9276810Z             {
2026-06-20T11:21:58.9276952Z               "path": "crates/spt/src/api/reporting.rs",
2026-06-20T11:21:58.9277068Z               "line": 284
2026-06-20T11:21:58.9277186Z             },
2026-06-20T11:21:58.9277292Z             {
2026-06-20T11:21:58.9277435Z               "path": "crates/spt/src/api/reporting.rs",
2026-06-20T11:21:58.9277540Z               "line": 295
2026-06-20T11:21:58.9277665Z             },
2026-06-20T11:21:58.9277778Z             {
2026-06-20T11:21:58.9277905Z               "path": "crates/spt/src/cli.rs",
2026-06-20T11:21:58.9278024Z               "line": 1193
2026-06-20T11:21:58.9278132Z             }
2026-06-20T11:21:58.9278251Z           ]
2026-06-20T11:21:58.9278362Z         },
2026-06-20T11:21:58.9278485Z         "int": {
2026-06-20T11:21:58.9278604Z           "complete": true,
2026-06-20T11:21:58.9278728Z           "evidence": [
2026-06-20T11:21:58.9278833Z             {
2026-06-20T11:21:58.9279053Z               "path": "crates/spt-daemon/tests/digest.rs",
2026-06-20T11:21:58.9279175Z               "line": 18
2026-06-20T11:21:58.9279277Z             }
2026-06-20T11:21:58.9279400Z           ]
2026-06-20T11:21:58.9279500Z         },
2026-06-20T11:21:58.9279616Z         "unit": {
2026-06-20T11:21:58.9279733Z           "complete": true,
2026-06-20T11:21:58.9279849Z           "evidence": [
2026-06-20T11:21:58.9279959Z             {
2026-06-20T11:21:58.9280102Z               "path": "crates/spt-daemon/src/digest.rs",
2026-06-20T11:21:58.9280222Z               "line": 364
2026-06-20T11:21:58.9280331Z             },
2026-06-20T11:21:58.9280439Z             {
2026-06-20T11:21:58.9280586Z               "path": "crates/spt-daemon/src/digest.rs",
2026-06-20T11:21:58.9280704Z               "line": 416
2026-06-20T11:21:58.9280808Z             },
2026-06-20T11:21:58.9281028Z             {
2026-06-20T11:21:58.9281171Z               "path": "crates/spt-daemon/src/digest.rs",
2026-06-20T11:21:58.9281290Z               "line": 426
2026-06-20T11:21:58.9281404Z             },
2026-06-20T11:21:58.9281520Z             {
2026-06-20T11:21:58.9281663Z               "path": "crates/spt-daemon/src/digesthub.rs",
2026-06-20T11:21:58.9281781Z               "line": 436
2026-06-20T11:21:58.9281891Z             },
2026-06-20T11:21:58.9281991Z             {
2026-06-20T11:21:58.9282140Z               "path": "crates/spt-daemon/src/digesthub.rs",
2026-06-20T11:21:58.9282258Z               "line": 456
2026-06-20T11:21:58.9282372Z             },
2026-06-20T11:21:58.9282577Z             {
2026-06-20T11:21:58.9282730Z               "path": "crates/spt-daemon/src/digesthub.rs",
2026-06-20T11:21:58.9282832Z               "line": 478
2026-06-20T11:21:58.9282949Z             },
2026-06-20T11:21:58.9283060Z             {
2026-06-20T11:21:58.9283212Z               "path": "crates/spt-daemon/src/digesthub.rs",
2026-06-20T11:21:58.9283339Z               "line": 491
2026-06-20T11:21:58.9283449Z             },
2026-06-20T11:21:58.9283573Z             {
2026-06-20T11:21:58.9283706Z               "path": "crates/spt-daemon/src/digesthub.rs",
2026-06-20T11:21:58.9283821Z               "line": 502
2026-06-20T11:21:58.9283925Z             },
2026-06-20T11:21:58.9284036Z             {
2026-06-20T11:21:58.9284179Z               "path": "crates/spt-store/src/history.rs",
2026-06-20T11:21:58.9284288Z               "line": 108
2026-06-20T11:21:58.9284408Z             },
2026-06-20T11:21:58.9284517Z             {
2026-06-20T11:21:58.9284665Z               "path": "crates/spt-term/src/digest.rs",
2026-06-20T11:21:58.9284775Z               "line": 119
2026-06-20T11:21:58.9284889Z             },
2026-06-20T11:21:58.9284995Z             {
2026-06-20T11:21:58.9285132Z               "path": "crates/spt-term/src/digest.rs",
2026-06-20T11:21:58.9285251Z               "line": 127
2026-06-20T11:21:58.9285358Z             },
2026-06-20T11:21:58.9285475Z             {
2026-06-20T11:21:58.9285622Z               "path": "crates/spt-term/src/projection.rs",
2026-06-20T11:21:58.9285732Z               "line": 474
2026-06-20T11:21:58.9285839Z             },
2026-06-20T11:21:58.9285954Z             {
2026-06-20T11:21:58.9286088Z               "path": "crates/spt-term/src/projection.rs",
2026-06-20T11:21:58.9286192Z               "line": 501
2026-06-20T11:21:58.9286302Z             },
2026-06-20T11:21:58.9286412Z             {
2026-06-20T11:21:58.9286558Z               "path": "crates/spt-term/src/projection.rs",
2026-06-20T11:21:58.9286679Z               "line": 520
2026-06-20T11:21:58.9286797Z             },
2026-06-20T11:21:58.9286913Z             {
2026-06-20T11:21:58.9287056Z               "path": "crates/spt-term/src/projection.rs",
2026-06-20T11:21:58.9287165Z               "line": 535
2026-06-20T11:21:58.9287271Z             },
2026-06-20T11:21:58.9287375Z             {
2026-06-20T11:21:58.9287508Z               "path": "crates/spt-term/src/projection.rs",
2026-06-20T11:21:58.9287619Z               "line": 561
2026-06-20T11:21:58.9287727Z             },
2026-06-20T11:21:58.9287827Z             {
2026-06-20T11:21:58.9287962Z               "path": "crates/spt-term/src/projection.rs",
2026-06-20T11:21:58.9288080Z               "line": 581
2026-06-20T11:21:58.9288186Z             },
2026-06-20T11:21:58.9288286Z             {
2026-06-20T11:21:58.9288423Z               "path": "crates/spt-term/src/projection.rs",
2026-06-20T11:21:58.9288537Z               "line": 591
2026-06-20T11:21:58.9288645Z             },
2026-06-20T11:21:58.9288754Z             {
2026-06-20T11:21:58.9288893Z               "path": "crates/spt-term/src/projection.rs",
2026-06-20T11:21:58.9289087Z               "line": 683
2026-06-20T11:21:58.9289194Z             },
2026-06-20T11:21:58.9289293Z             {
2026-06-20T11:21:58.9289440Z               "path": "crates/spt/src/api/reporting.rs",
2026-06-20T11:21:58.9289537Z               "line": 885
2026-06-20T11:21:58.9289651Z             },
2026-06-20T11:21:58.9289880Z             {
2026-06-20T11:21:58.9290003Z               "path": "crates/spt/src/cli.rs",
2026-06-20T11:21:58.9290118Z               "line": 9792
2026-06-20T11:21:58.9290228Z             }
2026-06-20T11:21:58.9290342Z           ]
2026-06-20T11:21:58.9290443Z         }
2026-06-20T11:21:58.9290548Z       }
2026-06-20T11:21:58.9290671Z     },
2026-06-20T11:21:58.9290772Z     {
2026-06-20T11:21:58.9290895Z       "id": "REQ-TERM-5",
2026-06-20T11:21:58.9292423Z       "title": "Adapter-declared digest extractor seam: a `[digest]` manifest section declaring an imperative extractor (native harness log -> the {role,text,tool,ts} contract; defaults to the [history] source files with an own-source escape hatch), `api digest-entry` push fallback, register-time validation of the section, adapter-declared presentation defaults (window depth, arg-truncation, sprint-collapse) that any consumer may override, and a `spt adapter digest-proof` author tool plus runtime skip-diagnostics (no silent drop). Reverses M9's no-manifest-seam stance; no declarative DSL.",
2026-06-20T11:21:58.9292665Z       "requiredStages": [
2026-06-20T11:21:58.9292780Z         "doc",
2026-06-20T11:21:58.9292895Z         "impl",
2026-06-20T11:21:58.9293000Z         "unit",
2026-06-20T11:21:58.9293114Z         "int"
2026-06-20T11:21:58.9293233Z       ],
2026-06-20T11:21:58.9293353Z       "stages": {
2026-06-20T11:21:58.9293457Z         "doc": {
2026-06-20T11:21:58.9293576Z           "complete": true,
2026-06-20T11:21:58.9293673Z           "evidence": [
2026-06-20T11:21:58.9293795Z             {
2026-06-20T11:21:58.9293914Z               "path": "docs/MANIFEST.md",
2026-06-20T11:21:58.9294039Z               "line": 234
2026-06-20T11:21:58.9294138Z             }
2026-06-20T11:21:58.9294242Z           ]
2026-06-20T11:21:58.9294354Z         },
2026-06-20T11:21:58.9294467Z         "impl": {
2026-06-20T11:21:58.9297277Z           "complete": true,
2026-06-20T11:21:58.9297410Z           "evidence": [
2026-06-20T11:21:58.9297540Z             {
2026-06-20T11:21:58.9297705Z               "path": "crates/spt-daemon/src/digest.rs",
2026-06-20T11:21:58.9297816Z               "line": 75
2026-06-20T11:21:58.9297935Z             },
2026-06-20T11:21:58.9298040Z             {
2026-06-20T11:21:58.9298193Z               "path": "crates/spt-daemon/src/digest.rs",
2026-06-20T11:21:58.9298316Z               "line": 131
2026-06-20T11:21:58.9298427Z             },
2026-06-20T11:21:58.9298536Z             {
2026-06-20T11:21:58.9298674Z               "path": "crates/spt-live/src/digest.rs",
2026-06-20T11:21:58.9298795Z               "line": 22
2026-06-20T11:21:58.9298907Z             },
2026-06-20T11:21:58.9299102Z             {
2026-06-20T11:21:58.9299238Z               "path": "crates/spt-live/src/digest.rs",
2026-06-20T11:21:58.9299361Z               "line": 87
2026-06-20T11:21:58.9299477Z             },
2026-06-20T11:21:58.9299581Z             {
2026-06-20T11:21:58.9299720Z               "path": "crates/spt-term/src/digest.rs",
2026-06-20T11:21:58.9299834Z               "line": 30
2026-06-20T11:21:58.9299929Z             },
2026-06-20T11:21:58.9300030Z             {
2026-06-20T11:21:58.9300178Z               "path": "crates/spt-term/src/projection.rs",
2026-06-20T11:21:58.9300296Z               "line": 103
2026-06-20T11:21:58.9300398Z             },
2026-06-20T11:21:58.9300516Z             {
2026-06-20T11:21:58.9300649Z               "path": "crates/spt-term/src/projection.rs",
2026-06-20T11:21:58.9300769Z               "line": 167
2026-06-20T11:21:58.9300883Z             },
2026-06-20T11:21:58.9300984Z             {
2026-06-20T11:21:58.9301126Z               "path": "crates/spt-term/src/projection.rs",
2026-06-20T11:21:58.9301241Z               "line": 434
2026-06-20T11:21:58.9301347Z             },
2026-06-20T11:21:58.9301451Z             {
2026-06-20T11:21:58.9301578Z               "path": "crates/spt/src/cli.rs",
2026-06-20T11:21:58.9301688Z               "line": 5650
2026-06-20T11:21:58.9301805Z             },
2026-06-20T11:21:58.9301909Z             {
2026-06-20T11:21:58.9302186Z               "path": "crates/spt/src/cli.rs",
2026-06-20T11:21:58.9302311Z               "line": 5957
2026-06-20T11:21:58.9302415Z             }
2026-06-20T11:21:58.9302519Z           ]
2026-06-20T11:21:58.9302626Z         },
2026-06-20T11:21:58.9302730Z         "int": {
2026-06-20T11:21:58.9302853Z           "complete": true,
2026-06-20T11:21:58.9302969Z           "evidence": [
2026-06-20T11:21:58.9303082Z             {
2026-06-20T11:21:58.9303250Z               "path": "crates/spt-daemon/tests/two_origin_spanning.rs",
2026-06-20T11:21:58.9303360Z               "line": 17
2026-06-20T11:21:58.9303474Z             }
2026-06-20T11:21:58.9303674Z           ]
2026-06-20T11:21:58.9303802Z         },
2026-06-20T11:21:58.9303909Z         "unit": {
2026-06-20T11:21:58.9304036Z           "complete": true,
2026-06-20T11:21:58.9304141Z           "evidence": [
2026-06-20T11:21:58.9304252Z             {
2026-06-20T11:21:58.9304398Z               "path": "crates/spt-daemon/src/digest.rs",
2026-06-20T11:21:58.9304526Z               "line": 375
2026-06-20T11:21:58.9304632Z             },
2026-06-20T11:21:58.9304736Z             {
2026-06-20T11:21:58.9304875Z               "path": "crates/spt-live/src/digest.rs",
2026-06-20T11:21:58.9304990Z               "line": 162
2026-06-20T11:21:58.9305108Z             },
2026-06-20T11:21:58.9305214Z             {
2026-06-20T11:21:58.9305342Z               "path": "crates/spt-live/src/digest.rs",
2026-06-20T11:21:58.9305461Z               "line": 179
2026-06-20T11:21:58.9305566Z             },
2026-06-20T11:21:58.9305685Z             {
2026-06-20T11:21:58.9305810Z               "path": "crates/spt-live/src/digest.rs",
2026-06-20T11:21:58.9305938Z               "line": 201
2026-06-20T11:21:58.9306061Z             },
2026-06-20T11:21:58.9306168Z             {
2026-06-20T11:21:58.9306309Z               "path": "crates/spt-live/src/digest.rs",
2026-06-20T11:21:58.9306424Z               "line": 212
2026-06-20T11:21:58.9306544Z             },
2026-06-20T11:21:58.9306662Z             {
2026-06-20T11:21:58.9306809Z               "path": "crates/spt-live/src/digest.rs",
2026-06-20T11:21:58.9306927Z               "line": 223
2026-06-20T11:21:58.9307031Z             },
2026-06-20T11:21:58.9307151Z             {
2026-06-20T11:21:58.9307302Z               "path": "crates/spt-runtime/src/manifest.rs",
2026-06-20T11:21:58.9307427Z               "line": 1525
2026-06-20T11:21:58.9307532Z             },
2026-06-20T11:21:58.9307636Z             {
2026-06-20T11:21:58.9307786Z               "path": "crates/spt-runtime/src/manifest.rs",
2026-06-20T11:21:58.9307899Z               "line": 1568
2026-06-20T11:21:58.9308008Z             },
2026-06-20T11:21:58.9308119Z             {
2026-06-20T11:21:58.9308270Z               "path": "crates/spt-term/src/projection.rs",
2026-06-20T11:21:58.9308386Z               "line": 606
2026-06-20T11:21:58.9308499Z             },
2026-06-20T11:21:58.9308609Z             {
2026-06-20T11:21:58.9308744Z               "path": "crates/spt-term/src/projection.rs",
2026-06-20T11:21:58.9308867Z               "line": 634
2026-06-20T11:21:58.9309059Z             },
2026-06-20T11:21:58.9309176Z             {
2026-06-20T11:21:58.9309321Z               "path": "crates/spt-term/src/projection.rs",
2026-06-20T11:21:58.9309449Z               "line": 646
2026-06-20T11:21:58.9309562Z             },
2026-06-20T11:21:58.9309676Z             {
2026-06-20T11:21:58.9309817Z               "path": "crates/spt-term/src/projection.rs",
2026-06-20T11:21:58.9309926Z               "line": 669
2026-06-20T11:21:58.9310037Z             },
2026-06-20T11:21:58.9310141Z             {
2026-06-20T11:21:58.9310270Z               "path": "crates/spt/src/cli.rs",
2026-06-20T11:21:58.9310394Z               "line": 8503
2026-06-20T11:21:58.9310499Z             },
2026-06-20T11:21:58.9310619Z             {
2026-06-20T11:21:58.9310743Z               "path": "crates/spt/src/cli.rs",
2026-06-20T11:21:58.9310861Z               "line": 8561
2026-06-20T11:21:58.9310982Z             }
2026-06-20T11:21:58.9311190Z           ]
2026-06-20T11:21:58.9311311Z         }
2026-06-20T11:21:58.9311419Z       }
2026-06-20T11:21:58.9311524Z     },
2026-06-20T11:21:58.9311630Z     {
2026-06-20T11:21:58.9311748Z       "id": "REQ-TERM-6",
2026-06-20T11:21:58.9312866Z       "title": "Thread-spanning digest across session boundaries: a per-endpoint session ledger (`<perch>/sessions.log`) appended at first bind and by `api boundary` on `/clear`|`/compact` session rotation, the digest enumerating the last K sessions so its rolling window bridges a boundary, and a distinctive in-timeline boundary marker (DigestEntry::Boundary). The digest follows the live-agent thread, not a single session.",
2026-06-20T11:21:58.9313089Z       "requiredStages": [
2026-06-20T11:21:58.9313210Z         "impl",
2026-06-20T11:21:58.9313319Z         "unit",
2026-06-20T11:21:58.9313437Z         "int"
2026-06-20T11:21:58.9313543Z       ],
2026-06-20T11:21:58.9313657Z       "stages": {
2026-06-20T11:21:58.9313767Z         "doc": {
2026-06-20T11:21:58.9313896Z           "complete": false,
2026-06-20T11:21:58.9314015Z           "evidence": []
2026-06-20T11:21:58.9314125Z         },
2026-06-20T11:21:58.9314239Z         "impl": {
2026-06-20T11:21:58.9314358Z           "complete": true,
2026-06-20T11:21:58.9314479Z           "evidence": [
2026-06-20T11:21:58.9314586Z             {
2026-06-20T11:21:58.9314731Z               "path": "crates/spt-daemon/src/digest.rs",
2026-06-20T11:21:58.9314850Z               "line": 132
2026-06-20T11:21:58.9314953Z             },
2026-06-20T11:21:58.9315062Z             {
2026-06-20T11:21:58.9315207Z               "path": "crates/spt-daemon/src/digest.rs",
2026-06-20T11:21:58.9315324Z               "line": 187
2026-06-20T11:21:58.9315444Z             },
2026-06-20T11:21:58.9315550Z             {
2026-06-20T11:21:58.9315706Z               "path": "crates/spt-store/src/sessions.rs",
2026-06-20T11:21:58.9315821Z               "line": 17
2026-06-20T11:21:58.9315940Z             },
2026-06-20T11:21:58.9316055Z             {
2026-06-20T11:21:58.9316202Z               "path": "crates/spt-store/src/sessions.rs",
2026-06-20T11:21:58.9316321Z               "line": 104
2026-06-20T11:21:58.9316423Z             },
2026-06-20T11:21:58.9316541Z             {
2026-06-20T11:21:58.9316680Z               "path": "crates/spt-term/src/projection.rs",
2026-06-20T11:21:58.9316790Z               "line": 319
2026-06-20T11:21:58.9316899Z             },
2026-06-20T11:21:58.9317009Z             {
2026-06-20T11:21:58.9317151Z               "path": "crates/spt-term/src/projection.rs",
2026-06-20T11:21:58.9317269Z               "line": 396
2026-06-20T11:21:58.9317388Z             }
2026-06-20T11:21:58.9317496Z           ]
2026-06-20T11:21:58.9317600Z         },
2026-06-20T11:21:58.9317716Z         "int": {
2026-06-20T11:21:58.9317821Z           "complete": true,
2026-06-20T11:21:58.9317934Z           "evidence": [
2026-06-20T11:21:58.9318045Z             {
2026-06-20T11:21:58.9318215Z               "path": "crates/spt-daemon/tests/two_origin_spanning.rs",
2026-06-20T11:21:58.9318350Z               "line": 18
2026-06-20T11:21:58.9318459Z             }
2026-06-20T11:21:58.9318573Z           ]
2026-06-20T11:21:58.9318679Z         },
2026-06-20T11:21:58.9318788Z         "unit": {
2026-06-20T11:21:58.9318893Z           "complete": true,
2026-06-20T11:21:58.9319060Z           "evidence": [
2026-06-20T11:21:58.9319169Z             {
2026-06-20T11:21:58.9319299Z               "path": "crates/spt-store/src/sessions.rs",
2026-06-20T11:21:58.9319427Z               "line": 135
2026-06-20T11:21:58.9319532Z             },
2026-06-20T11:21:58.9319638Z             {
2026-06-20T11:21:58.9319766Z               "path": "crates/spt-store/src/sessions.rs",
2026-06-20T11:21:58.9319886Z               "line": 150
2026-06-20T11:21:58.9320000Z             },
2026-06-20T11:21:58.9320103Z             {
2026-06-20T11:21:58.9320246Z               "path": "crates/spt-store/src/sessions.rs",
2026-06-20T11:21:58.9320359Z               "line": 166
2026-06-20T11:21:58.9320463Z             },
2026-06-20T11:21:58.9320664Z             {
2026-06-20T11:21:58.9320801Z               "path": "crates/spt-store/src/sessions.rs",
2026-06-20T11:21:58.9320908Z               "line": 257
2026-06-20T11:21:58.9321016Z             },
2026-06-20T11:21:58.9321125Z             {
2026-06-20T11:21:58.9321264Z               "path": "crates/spt-term/src/projection.rs",
2026-06-20T11:21:58.9321388Z               "line": 738
2026-06-20T11:21:58.9321503Z             },
2026-06-20T11:21:58.9321612Z             {
2026-06-20T11:21:58.9321751Z               "path": "crates/spt-term/src/projection.rs",
2026-06-20T11:21:58.9321857Z               "line": 759
2026-06-20T11:21:58.9321974Z             },
2026-06-20T11:21:58.9322171Z             {
2026-06-20T11:21:58.9322323Z               "path": "crates/spt/src/api/reporting.rs",
2026-06-20T11:21:58.9322438Z               "line": 726
2026-06-20T11:21:58.9322561Z             }
2026-06-20T11:21:58.9322665Z           ]
2026-06-20T11:21:58.9322765Z         }
2026-06-20T11:21:58.9322878Z       }
2026-06-20T11:21:58.9322978Z     },
2026-06-20T11:21:58.9323092Z     {
2026-06-20T11:21:58.9323203Z       "id": "REQ-TERM-7",
2026-06-20T11:21:58.9324370Z       "title": "Two-origin digest merge: spt-owned context-injection entries (psyche_download | echo_mirror | owl_message) appended by spt to the endpoint `digest.log`, timestamp-interleaved with the adapter's extracted activity records into one ordered timeline, via a distinct context-injection record category. Data model only this milestone; GUI collapse/expand and the echo-reads-digest delta loop are deferred to the surfaces that consume them.",
2026-06-20T11:21:58.9324498Z       "requiredStages": [
2026-06-20T11:21:58.9324599Z         "impl",
2026-06-20T11:21:58.9324705Z         "unit",
2026-06-20T11:21:58.9324813Z         "int"
2026-06-20T11:21:58.9324923Z       ],
2026-06-20T11:21:58.9325034Z       "stages": {
2026-06-20T11:21:58.9325142Z         "doc": {
2026-06-20T11:21:58.9325266Z           "complete": false,
2026-06-20T11:21:58.9325377Z           "evidence": []
2026-06-20T11:21:58.9325485Z         },
2026-06-20T11:21:58.9325594Z         "impl": {
2026-06-20T11:21:58.9325704Z           "complete": true,
2026-06-20T11:21:58.9325823Z           "evidence": [
2026-06-20T11:21:58.9325942Z             {
2026-06-20T11:21:58.9326086Z               "path": "crates/spt-daemon/src/digest.rs",
2026-06-20T11:21:58.9326204Z               "line": 133
2026-06-20T11:21:58.9326315Z             },
2026-06-20T11:21:58.9326429Z             {
2026-06-20T11:21:58.9326567Z               "path": "crates/spt-daemon/src/digest.rs",
2026-06-20T11:21:58.9326691Z               "line": 326
2026-06-20T11:21:58.9326796Z             },
2026-06-20T11:21:58.9326906Z             {
2026-06-20T11:21:58.9327044Z               "path": "crates/spt-live/src/inject.rs",
2026-06-20T11:21:58.9327163Z               "line": 15
2026-06-20T11:21:58.9327274Z             },
2026-06-20T11:21:58.9327378Z             {
2026-06-20T11:21:58.9327506Z               "path": "crates/spt-live/src/inject.rs",
2026-06-20T11:21:58.9327627Z               "line": 32
2026-06-20T11:21:58.9327749Z             },
2026-06-20T11:21:58.9327848Z             {
2026-06-20T11:21:58.9327996Z               "path": "crates/spt-store/src/history.rs",
2026-06-20T11:21:58.9328113Z               "line": 49
2026-06-20T11:21:58.9328223Z             },
2026-06-20T11:21:58.9328343Z             {
2026-06-20T11:21:58.9328480Z               "path": "crates/spt-term/src/projection.rs",
2026-06-20T11:21:58.9328596Z               "line": 286
2026-06-20T11:21:58.9328690Z             },
2026-06-20T11:21:58.9328799Z             {
2026-06-20T11:21:58.9329029Z               "path": "crates/spt-term/src/projection.rs",
2026-06-20T11:21:58.9329148Z               "line": 320
2026-06-20T11:21:58.9329268Z             }
2026-06-20T11:21:58.9329377Z           ]
2026-06-20T11:21:58.9329487Z         },
2026-06-20T11:21:58.9329601Z         "int": {
2026-06-20T11:21:58.9329724Z           "complete": true,
2026-06-20T11:21:58.9329840Z           "evidence": [
2026-06-20T11:21:58.9330049Z             {
2026-06-20T11:21:58.9330222Z               "path": "crates/spt-daemon/tests/two_origin_spanning.rs",
2026-06-20T11:21:58.9330321Z               "line": 19
2026-06-20T11:21:58.9330436Z             }
2026-06-20T11:21:58.9330532Z           ]
2026-06-20T11:21:58.9330639Z         },
2026-06-20T11:21:58.9330763Z         "unit": {
2026-06-20T11:21:58.9330882Z           "complete": true,
2026-06-20T11:21:58.9331004Z           "evidence": [
2026-06-20T11:21:58.9331114Z             {
2026-06-20T11:21:58.9331253Z               "path": "crates/spt-daemon/src/digest.rs",
2026-06-20T11:21:58.9331366Z               "line": 455
2026-06-20T11:21:58.9331477Z             },
2026-06-20T11:21:58.9331695Z             {
2026-06-20T11:21:58.9331825Z               "path": "crates/spt-daemon/src/digest.rs",
2026-06-20T11:21:58.9331938Z               "line": 568
2026-06-20T11:21:58.9332044Z             },
2026-06-20T11:21:58.9332154Z             {
2026-06-20T11:21:58.9332291Z               "path": "crates/spt-live/src/inject.rs",
2026-06-20T11:21:58.9332412Z               "line": 58
2026-06-20T11:21:58.9332525Z             },
2026-06-20T11:21:58.9332630Z             {
2026-06-20T11:21:58.9332774Z               "path": "crates/spt-live/src/inject.rs",
2026-06-20T11:21:58.9332878Z               "line": 77
2026-06-20T11:21:58.9332989Z             },
2026-06-20T11:21:58.9333098Z             {
2026-06-20T11:21:58.9333240Z               "path": "crates/spt-live/src/inject.rs",
2026-06-20T11:21:58.9333359Z               "line": 87
2026-06-20T11:21:58.9333467Z             },
2026-06-20T11:21:58.9333580Z             {
2026-06-20T11:21:58.9333705Z               "path": "crates/spt-store/src/history.rs",
2026-06-20T11:21:58.9333833Z               "line": 94
2026-06-20T11:21:58.9333933Z             },
2026-06-20T11:21:58.9334043Z             {
2026-06-20T11:21:58.9334190Z               "path": "crates/spt-term/src/projection.rs",
2026-06-20T11:21:58.9334306Z               "line": 691
2026-06-20T11:21:58.9334420Z             },
2026-06-20T11:21:58.9334529Z             {
2026-06-20T11:21:58.9334678Z               "path": "crates/spt-term/src/projection.rs",
2026-06-20T11:21:58.9334801Z               "line": 716
2026-06-20T11:21:58.9334906Z             }
2026-06-20T11:21:58.9335025Z           ]
2026-06-20T11:21:58.9335130Z         }
2026-06-20T11:21:58.9335231Z       }
2026-06-20T11:21:58.9335340Z     },
2026-06-20T11:21:58.9335454Z     {
2026-06-20T11:21:58.9335575Z       "id": "REQ-UPD-1",
2026-06-20T11:21:58.9335716Z       "title": "Peer-propagated update over P2P",
2026-06-20T11:21:58.9335841Z       "requiredStages": [
2026-06-20T11:21:58.9335947Z         "impl",
2026-06-20T11:21:58.9336059Z         "unit",
2026-06-20T11:21:58.9336173Z         "int"
2026-06-20T11:21:58.9336284Z       ],
2026-06-20T11:21:58.9336388Z       "stages": {
2026-06-20T11:21:58.9336507Z         "doc": {
2026-06-20T11:21:58.9336632Z           "complete": false,
2026-06-20T11:21:58.9336745Z           "evidence": []
2026-06-20T11:21:58.9336851Z         },
2026-06-20T11:21:58.9336965Z         "impl": {
2026-06-20T11:21:58.9337089Z           "complete": true,
2026-06-20T11:21:58.9337200Z           "evidence": [
2026-06-20T11:21:58.9337318Z             {
2026-06-20T11:21:58.9337466Z               "path": "crates/spt-daemon/src/propagate.rs",
2026-06-20T11:21:58.9337571Z               "line": 28
2026-06-20T11:21:58.9337671Z             },
2026-06-20T11:21:58.9337776Z             {
2026-06-20T11:21:58.9337924Z               "path": "crates/spt-daemon/src/propagate.rs",
2026-06-20T11:21:58.9338028Z               "line": 103
2026-06-20T11:21:58.9338154Z             },
2026-06-20T11:21:58.9338257Z             {
2026-06-20T11:21:58.9338404Z               "path": "crates/spt-daemon/src/propagate.rs",
2026-06-20T11:21:58.9338518Z               "line": 342
2026-06-20T11:21:58.9338636Z             },
2026-06-20T11:21:58.9338754Z             {
2026-06-20T11:21:58.9338899Z               "path": "crates/spt-daemon/src/relcache.rs",
2026-06-20T11:21:58.9339088Z               "line": 22
2026-06-20T11:21:58.9339335Z             },
2026-06-20T11:21:58.9339480Z             {
2026-06-20T11:21:58.9339632Z               "path": "crates/spt-daemon/src/relcache.rs",
2026-06-20T11:21:58.9339738Z               "line": 207
2026-06-20T11:21:58.9339852Z             },
2026-06-20T11:21:58.9339979Z             {
2026-06-20T11:21:58.9340109Z               "path": "crates/spt-daemon/src/relcache.rs",
2026-06-20T11:21:58.9340223Z               "line": 283
2026-06-20T11:21:58.9340338Z             },
2026-06-20T11:21:58.9340443Z             {
2026-06-20T11:21:58.9340576Z               "path": "crates/spt-daemon/src/relcache.rs",
2026-06-20T11:21:58.9340687Z               "line": 340
2026-06-20T11:21:58.9340896Z             },
2026-06-20T11:21:58.9340996Z             {
2026-06-20T11:21:58.9341139Z               "path": "crates/spt-net/src/net/update.rs",
2026-06-20T11:21:58.9341252Z               "line": 37
2026-06-20T11:21:58.9341362Z             }
2026-06-20T11:21:58.9341465Z           ]
2026-06-20T11:21:58.9341593Z         },
2026-06-20T11:21:58.9341693Z         "int": {
2026-06-20T11:21:58.9341803Z           "complete": true,
2026-06-20T11:21:58.9341927Z           "evidence": [
2026-06-20T11:21:58.9342037Z             {
2026-06-20T11:21:58.9342184Z               "path": "crates/spt-daemon/tests/dispatch.rs",
2026-06-20T11:21:58.9342295Z               "line": 207
2026-06-20T11:21:58.9342413Z             },
2026-06-20T11:21:58.9342517Z             {
2026-06-20T11:21:58.9342662Z               "path": "crates/spt-daemon/tests/twohost.rs",
2026-06-20T11:21:58.9342771Z               "line": 1082
2026-06-20T11:21:58.9342876Z             }
2026-06-20T11:21:58.9342991Z           ]
2026-06-20T11:21:58.9343109Z         },
2026-06-20T11:21:58.9343219Z         "unit": {
2026-06-20T11:21:58.9343344Z           "complete": true,
2026-06-20T11:21:58.9343462Z           "evidence": [
2026-06-20T11:21:58.9343578Z             {
2026-06-20T11:21:58.9343714Z               "path": "crates/spt-daemon/src/relcache.rs",
2026-06-20T11:21:58.9343833Z               "line": 490
2026-06-20T11:21:58.9343933Z             },
2026-06-20T11:21:58.9344050Z             {
2026-06-20T11:21:58.9344193Z               "path": "crates/spt-daemon/src/relcache.rs",
2026-06-20T11:21:58.9344313Z               "line": 616
2026-06-20T11:21:58.9344417Z             },
2026-06-20T11:21:58.9344527Z             {
2026-06-20T11:21:58.9344676Z               "path": "crates/spt-daemon/tests/propagate.rs",
2026-06-20T11:21:58.9344789Z               "line": 277
2026-06-20T11:21:58.9344900Z             },
2026-06-20T11:21:58.9345004Z             {
2026-06-20T11:21:58.9345132Z               "path": "crates/spt-net/src/net/update.rs",
2026-06-20T11:21:58.9345252Z               "line": 124
2026-06-20T11:21:58.9345356Z             },
2026-06-20T11:21:58.9345466Z             {
2026-06-20T11:21:58.9345595Z               "path": "crates/spt-net/src/net/update.rs",
2026-06-20T11:21:58.9345709Z               "line": 200
2026-06-20T11:21:58.9345830Z             }
2026-06-20T11:21:58.9345933Z           ]
2026-06-20T11:21:58.9346048Z         }
2026-06-20T11:21:58.9346164Z       }
2026-06-20T11:21:58.9346281Z     },
2026-06-20T11:21:58.9346396Z     {
2026-06-20T11:21:58.9346517Z       "id": "REQ-UPD-2",
2026-06-20T11:21:58.9346686Z       "title": "All binaries signature-verified before handoff",
2026-06-20T11:21:58.9346805Z       "requiredStages": [
2026-06-20T11:21:58.9346915Z         "impl",
2026-06-20T11:21:58.9347033Z         "unit"
2026-06-20T11:21:58.9347135Z       ],
2026-06-20T11:21:58.9347249Z       "stages": {
2026-06-20T11:21:58.9347367Z         "doc": {
2026-06-20T11:21:58.9347492Z           "complete": false,
2026-06-20T11:21:58.9347606Z           "evidence": []
2026-06-20T11:21:58.9347711Z         },
2026-06-20T11:21:58.9347826Z         "impl": {
2026-06-20T11:21:58.9347944Z           "complete": true,
2026-06-20T11:21:58.9348060Z           "evidence": [
2026-06-20T11:21:58.9348169Z             {
2026-06-20T11:21:58.9348316Z               "path": "crates/spt-daemon/src/propagate.rs",
2026-06-20T11:21:58.9348516Z               "line": 343
2026-06-20T11:21:58.9348631Z             },
2026-06-20T11:21:58.9348738Z             {
2026-06-20T11:21:58.9348883Z               "path": "crates/spt-daemon/src/propagate.rs",
2026-06-20T11:21:58.9349078Z               "line": 476
2026-06-20T11:21:58.9349196Z             },
2026-06-20T11:21:58.9349314Z             {
2026-06-20T11:21:58.9349473Z               "path": "crates/spt-daemon/src/release.rs",
2026-06-20T11:21:58.9349590Z               "line": 29
2026-06-20T11:21:58.9349696Z             },
2026-06-20T11:21:58.9349815Z             {
2026-06-20T11:21:58.9349953Z               "path": "crates/spt-daemon/src/release.rs",
2026-06-20T11:21:58.9350168Z               "line": 271
2026-06-20T11:21:58.9350283Z             },
2026-06-20T11:21:58.9350402Z             {
2026-06-20T11:21:58.9350549Z               "path": "crates/spt-daemon/src/release.rs",
2026-06-20T11:21:58.9350651Z               "line": 288
2026-06-20T11:21:58.9350755Z             },
2026-06-20T11:21:58.9350873Z             {
2026-06-20T11:21:58.9351008Z               "path": "crates/spt-daemon/src/release.rs",
2026-06-20T11:21:58.9351132Z               "line": 408
2026-06-20T11:21:58.9351242Z             },
2026-06-20T11:21:58.9351346Z             {
2026-06-20T11:21:58.9351475Z               "path": "crates/spt-daemon/src/release.rs",
2026-06-20T11:21:58.9351591Z               "line": 558
2026-06-20T11:21:58.9351703Z             },
2026-06-20T11:21:58.9351807Z             {
2026-06-20T11:21:58.9351950Z               "path": "crates/spt-daemon/src/update.rs",
2026-06-20T11:21:58.9352077Z               "line": 155
2026-06-20T11:21:58.9352191Z             }
2026-06-20T11:21:58.9352292Z           ]
2026-06-20T11:21:58.9352401Z         },
2026-06-20T11:21:58.9352515Z         "int": {
2026-06-20T11:21:58.9352621Z           "complete": false,
2026-06-20T11:21:58.9352744Z           "evidence": []
2026-06-20T11:21:58.9352855Z         },
2026-06-20T11:21:58.9352973Z         "unit": {
2026-06-20T11:21:58.9353082Z           "complete": true,
2026-06-20T11:21:58.9353203Z           "evidence": [
2026-06-20T11:21:58.9353307Z             {
2026-06-20T11:21:58.9353445Z               "path": "crates/spt-daemon/src/release.rs",
2026-06-20T11:21:58.9353565Z               "line": 750
2026-06-20T11:21:58.9353679Z             },
2026-06-20T11:21:58.9353789Z             {
2026-06-20T11:21:58.9353927Z               "path": "crates/spt-daemon/src/release.rs",
2026-06-20T11:21:58.9354036Z               "line": 811
2026-06-20T11:21:58.9354148Z             },
2026-06-20T11:21:58.9354256Z             {
2026-06-20T11:21:58.9354398Z               "path": "crates/spt-daemon/src/release.rs",
2026-06-20T11:21:58.9354507Z               "line": 825
2026-06-20T11:21:58.9354625Z             },
2026-06-20T11:21:58.9354729Z             {
2026-06-20T11:21:58.9354878Z               "path": "crates/spt-daemon/src/release.rs",
2026-06-20T11:21:58.9354991Z               "line": 841
2026-06-20T11:21:58.9355102Z             },
2026-06-20T11:21:58.9355216Z             {
2026-06-20T11:21:58.9355354Z               "path": "crates/spt-daemon/src/release.rs",
2026-06-20T11:21:58.9355465Z               "line": 932
2026-06-20T11:21:58.9355574Z             },
2026-06-20T11:21:58.9355688Z             {
2026-06-20T11:21:58.9355822Z               "path": "crates/spt-daemon/src/update.rs",
2026-06-20T11:21:58.9355926Z               "line": 414
2026-06-20T11:21:58.9356051Z             },
2026-06-20T11:21:58.9356155Z             {
2026-06-20T11:21:58.9356303Z               "path": "crates/spt-daemon/src/update.rs",
2026-06-20T11:21:58.9356418Z               "line": 427
2026-06-20T11:21:58.9356536Z             },
2026-06-20T11:21:58.9356661Z             {
2026-06-20T11:21:58.9356813Z               "path": "crates/spt-daemon/tests/propagate.rs",
2026-06-20T11:21:58.9356932Z               "line": 410
2026-06-20T11:21:58.9357038Z             }
2026-06-20T11:21:58.9357161Z           ]
2026-06-20T11:21:58.9357260Z         }
2026-06-20T11:21:58.9357466Z       }
2026-06-20T11:21:58.9357580Z     },
2026-06-20T11:21:58.9357685Z     {
2026-06-20T11:21:58.9357814Z       "id": "REQ-UPD-3",
2026-06-20T11:21:58.9358005Z       "title": "No endpoint process terminates/suspends during self-update",
2026-06-20T11:21:58.9358129Z       "requiredStages": [
2026-06-20T11:21:58.9358233Z         "impl",
2026-06-20T11:21:58.9358339Z         "unit",
2026-06-20T11:21:58.9358453Z         "int"
2026-06-20T11:21:58.9358557Z       ],
2026-06-20T11:21:58.9358677Z       "stages": {
2026-06-20T11:21:58.9358786Z         "doc": {
2026-06-20T11:21:58.9358911Z           "complete": false,
2026-06-20T11:21:58.9359120Z           "evidence": []
2026-06-20T11:21:58.9359415Z         },
2026-06-20T11:21:58.9359528Z         "impl": {
2026-06-20T11:21:58.9359643Z           "complete": true,
2026-06-20T11:21:58.9359765Z           "evidence": [
2026-06-20T11:21:58.9359879Z             {
2026-06-20T11:21:58.9360023Z               "path": "crates/spt-daemon/src/applyhost.rs",
2026-06-20T11:21:58.9360141Z               "line": 40
2026-06-20T11:21:58.9360252Z             },
2026-06-20T11:21:58.9360370Z             {
2026-06-20T11:21:58.9360514Z               "path": "crates/spt-daemon/src/applyhost.rs",
2026-06-20T11:21:58.9360633Z               "line": 87
2026-06-20T11:21:58.9360737Z             },
2026-06-20T11:21:58.9360853Z             {
2026-06-20T11:21:58.9360981Z               "path": "crates/spt-daemon/src/brain.rs",
2026-06-20T11:21:58.9361104Z               "line": 1021
2026-06-20T11:21:58.9361211Z             },
2026-06-20T11:21:58.9361320Z             {
2026-06-20T11:21:58.9361448Z               "path": "crates/spt-daemon/src/broker.rs",
2026-06-20T11:21:58.9361559Z               "line": 1805
2026-06-20T11:21:58.9361682Z             },
2026-06-20T11:21:58.9361797Z             {
2026-06-20T11:21:58.9361925Z               "path": "crates/spt-daemon/src/update.rs",
2026-06-20T11:21:58.9362035Z               "line": 26
2026-06-20T11:21:58.9362146Z             },
2026-06-20T11:21:58.9362263Z             {
2026-06-20T11:21:58.9362400Z               "path": "crates/spt-daemon/src/update.rs",
2026-06-20T11:21:58.9362520Z               "line": 114
2026-06-20T11:21:58.9362642Z             },
2026-06-20T11:21:58.9362751Z             {
2026-06-20T11:21:58.9362885Z               "path": "crates/spt-daemon/src/update.rs",
2026-06-20T11:21:58.9362994Z               "line": 246
2026-06-20T11:21:58.9363115Z             },
2026-06-20T11:21:58.9363224Z             {
2026-06-20T11:21:58.9363351Z               "path": "crates/spt/src/cli.rs",
2026-06-20T11:21:58.9363467Z               "line": 2442
2026-06-20T11:21:58.9363577Z             }
2026-06-20T11:21:58.9363686Z           ]
2026-06-20T11:21:58.9363806Z         },
2026-06-20T11:21:58.9363929Z         "int": {
2026-06-20T11:21:58.9364044Z           "complete": true,
2026-06-20T11:21:58.9364158Z           "evidence": [
2026-06-20T11:21:58.9364268Z             {
2026-06-20T11:21:58.9364412Z               "path": "crates/spt/tests/brain_survive.rs",
2026-06-20T11:21:58.9364534Z               "line": 58
2026-06-20T11:21:58.9364635Z             }
2026-06-20T11:21:58.9364750Z           ]
2026-06-20T11:21:58.9364854Z         },
2026-06-20T11:21:58.9364958Z         "unit": {
2026-06-20T11:21:58.9365082Z           "complete": true,
2026-06-20T11:21:58.9365190Z           "evidence": [
2026-06-20T11:21:58.9365303Z             {
2026-06-20T11:21:58.9365448Z               "path": "crates/spt-daemon/src/applyhost.rs",
2026-06-20T11:21:58.9365570Z               "line": 532
2026-06-20T11:21:58.9365681Z             },
2026-06-20T11:21:58.9365801Z             {
2026-06-20T11:21:58.9365947Z               "path": "crates/spt-daemon/src/applyhost.rs",
2026-06-20T11:21:58.9366067Z               "line": 585
2026-06-20T11:21:58.9366181Z             },
2026-06-20T11:21:58.9366287Z             {
2026-06-20T11:21:58.9366433Z               "path": "crates/spt-daemon/src/applyhost.rs",
2026-06-20T11:21:58.9366543Z               "line": 653
2026-06-20T11:21:58.9366659Z             },
2026-06-20T11:21:58.9366882Z             {
2026-06-20T11:21:58.9367030Z               "path": "crates/spt-daemon/src/brainproc.rs",
2026-06-20T11:21:58.9367149Z               "line": 1102
2026-06-20T11:21:58.9367260Z             },
2026-06-20T11:21:58.9367373Z             {
2026-06-20T11:21:58.9367502Z               "path": "crates/spt-daemon/src/update.rs",
2026-06-20T11:21:58.9367622Z               "line": 271
2026-06-20T11:21:58.9367730Z             },
2026-06-20T11:21:58.9367844Z             {
2026-06-20T11:21:58.9367983Z               "path": "crates/spt-daemon/src/update.rs",
2026-06-20T11:21:58.9368082Z               "line": 295
2026-06-20T11:21:58.9368182Z             },
2026-06-20T11:21:58.9368379Z             {
2026-06-20T11:21:58.9368527Z               "path": "crates/spt-daemon/src/update.rs",
2026-06-20T11:21:58.9368645Z               "line": 316
2026-06-20T11:21:58.9368750Z             },
2026-06-20T11:21:58.9368856Z             {
2026-06-20T11:21:58.9369064Z               "path": "crates/spt-daemon/src/update.rs",
2026-06-20T11:21:58.9369185Z               "line": 332
2026-06-20T11:21:58.9369298Z             }
2026-06-20T11:21:58.9369408Z           ]
2026-06-20T11:21:58.9369524Z         }
2026-06-20T11:21:58.9369632Z       }
2026-06-20T11:21:58.9369747Z     },
2026-06-20T11:21:58.9369848Z     {
2026-06-20T11:21:58.9369970Z       "id": "REQ-UPD-4",
2026-06-20T11:21:58.9370165Z       "title": "Update gated on user confirmation by default; opt-in full-auto",
2026-06-20T11:21:58.9370282Z       "requiredStages": [
2026-06-20T11:21:58.9370387Z         "impl",
2026-06-20T11:21:58.9370492Z         "unit"
2026-06-20T11:21:58.9370611Z       ],
2026-06-20T11:21:58.9370725Z       "stages": {
2026-06-20T11:21:58.9370845Z         "doc": {
2026-06-20T11:21:58.9370964Z           "complete": false,
2026-06-20T11:21:58.9371088Z           "evidence": []
2026-06-20T11:21:58.9371198Z         },
2026-06-20T11:21:58.9371312Z         "impl": {
2026-06-20T11:21:58.9371437Z           "complete": true,
2026-06-20T11:21:58.9371556Z           "evidence": [
2026-06-20T11:21:58.9371679Z             {
2026-06-20T11:21:58.9371818Z               "path": "crates/spt-daemon/src/applyhost.rs",
2026-06-20T11:21:58.9371941Z               "line": 41
2026-06-20T11:21:58.9372052Z             },
2026-06-20T11:21:58.9372161Z             {
2026-06-20T11:21:58.9372313Z               "path": "crates/spt-daemon/src/applyhost.rs",
2026-06-20T11:21:58.9372420Z               "line": 88
2026-06-20T11:21:58.9372523Z             },
2026-06-20T11:21:58.9372633Z             {
2026-06-20T11:21:58.9372781Z               "path": "crates/spt-daemon/src/consent.rs",
2026-06-20T11:21:58.9372904Z               "line": 23
2026-06-20T11:21:58.9373008Z             },
2026-06-20T11:21:58.9373122Z             {
2026-06-20T11:21:58.9373254Z               "path": "crates/spt-daemon/src/consent.rs",
2026-06-20T11:21:58.9373374Z               "line": 56
2026-06-20T11:21:58.9373483Z             },
2026-06-20T11:21:58.9373587Z             {
2026-06-20T11:21:58.9373732Z               "path": "crates/spt-daemon/src/consent.rs",
2026-06-20T11:21:58.9373836Z               "line": 77
2026-06-20T11:21:58.9373946Z             },
2026-06-20T11:21:58.9374051Z             {
2026-06-20T11:21:58.9374198Z               "path": "crates/spt-daemon/src/lifecycle.rs",
2026-06-20T11:21:58.9374314Z               "line": 236
2026-06-20T11:21:58.9374423Z             },
2026-06-20T11:21:58.9374537Z             {
2026-06-20T11:21:58.9374652Z               "path": "crates/spt-daemon/src/notif.rs",
2026-06-20T11:21:58.9374766Z               "line": 108
2026-06-20T11:21:58.9374880Z             },
2026-06-20T11:21:58.9374986Z             {
2026-06-20T11:21:58.9375123Z               "path": "crates/spt-store/src/info.rs",
2026-06-20T11:21:58.9375244Z               "line": 270
2026-06-20T11:21:58.9375344Z             },
2026-06-20T11:21:58.9375451Z             {
2026-06-20T11:21:58.9375585Z               "path": "crates/spt/src/cli.rs",
2026-06-20T11:21:58.9375693Z               "line": 2441
2026-06-20T11:21:58.9375922Z             }
2026-06-20T11:21:58.9376036Z           ]
2026-06-20T11:21:58.9376154Z         },
2026-06-20T11:21:58.9376280Z         "int": {
2026-06-20T11:21:58.9376389Z           "complete": false,
2026-06-20T11:21:58.9376507Z           "evidence": []
2026-06-20T11:21:58.9376623Z         },
2026-06-20T11:21:58.9376741Z         "unit": {
2026-06-20T11:21:58.9376866Z           "complete": true,
2026-06-20T11:21:58.9376975Z           "evidence": [
2026-06-20T11:21:58.9377079Z             {
2026-06-20T11:21:58.9377209Z               "path": "crates/spt-daemon/src/applyhost.rs",
2026-06-20T11:21:58.9377333Z               "line": 581
2026-06-20T11:21:58.9377428Z             },
2026-06-20T11:21:58.9377638Z             {
2026-06-20T11:21:58.9377786Z               "path": "crates/spt-daemon/src/applyhost.rs",
2026-06-20T11:21:58.9377901Z               "line": 706
2026-06-20T11:21:58.9378005Z             },
2026-06-20T11:21:58.9378111Z             {
2026-06-20T11:21:58.9378253Z               "path": "crates/spt-daemon/src/config.rs",
2026-06-20T11:21:58.9378361Z               "line": 384
2026-06-20T11:21:58.9378471Z             },
2026-06-20T11:21:58.9381195Z             {
2026-06-20T11:21:58.9381377Z               "path": "crates/spt-daemon/src/consent.rs",
2026-06-20T11:21:58.9381501Z               "line": 102
2026-06-20T11:21:58.9381600Z             },
2026-06-20T11:21:58.9381707Z             {
2026-06-20T11:21:58.9381848Z               "path": "crates/spt-daemon/src/consent.rs",
2026-06-20T11:21:58.9381973Z               "line": 123
2026-06-20T11:21:58.9382087Z             },
2026-06-20T11:21:58.9382196Z             {
2026-06-20T11:21:58.9382341Z               "path": "crates/spt-daemon/src/consent.rs",
2026-06-20T11:21:58.9382464Z               "line": 142
2026-06-20T11:21:58.9382588Z             },
2026-06-20T11:21:58.9382693Z             {
2026-06-20T11:21:58.9382835Z               "path": "crates/spt-store/src/info.rs",
2026-06-20T11:21:58.9382956Z               "line": 582
2026-06-20T11:21:58.9383068Z             },
2026-06-20T11:21:58.9383174Z             {
2026-06-20T11:21:58.9383309Z               "path": "crates/spt-store/src/perch.rs",
2026-06-20T11:21:58.9383417Z               "line": 566
2026-06-20T11:21:58.9383520Z             },
2026-06-20T11:21:58.9383631Z             {
2026-06-20T11:21:58.9383752Z               "path": "crates/spt/src/cli.rs",
2026-06-20T11:21:58.9383867Z               "line": 8256
2026-06-20T11:21:58.9383968Z             }
2026-06-20T11:21:58.9384077Z           ]
2026-06-20T11:21:58.9384186Z         }
2026-06-20T11:21:58.9384297Z       }
2026-06-20T11:21:58.9384400Z     },
2026-06-20T11:21:58.9384511Z     {
2026-06-20T11:21:58.9384630Z       "id": "REQ-UPD-5",
2026-06-20T11:21:58.9384796Z       "title": "spt-core ripple-updates registered adapters",
2026-06-20T11:21:58.9384912Z       "requiredStages": [
2026-06-20T11:21:58.9385021Z         "impl",
2026-06-20T11:21:58.9385125Z         "unit"
2026-06-20T11:21:58.9385241Z       ],
2026-06-20T11:21:58.9385359Z       "stages": {
2026-06-20T11:21:58.9385479Z         "doc": {
2026-06-20T11:21:58.9385603Z           "complete": false,
2026-06-20T11:21:58.9385712Z           "evidence": []
2026-06-20T11:21:58.9385823Z         },
2026-06-20T11:21:58.9385932Z         "impl": {
2026-06-20T11:21:58.9386059Z           "complete": true,
2026-06-20T11:21:58.9386179Z           "evidence": [
2026-06-20T11:21:58.9386281Z             {
2026-06-20T11:21:58.9386438Z               "path": "crates/spt-daemon/src/adapter_update.rs",
2026-06-20T11:21:58.9386554Z               "line": 27
2026-06-20T11:21:58.9386672Z             },
2026-06-20T11:21:58.9386787Z             {
2026-06-20T11:21:58.9386944Z               "path": "crates/spt-daemon/src/adapter_update.rs",
2026-06-20T11:21:58.9387063Z               "line": 87
2026-06-20T11:21:58.9387168Z             },
2026-06-20T11:21:58.9387282Z             {
2026-06-20T11:21:58.9387431Z               "path": "crates/spt-daemon/src/adapter_update.rs",
2026-06-20T11:21:58.9387550Z               "line": 145
2026-06-20T11:21:58.9387798Z             },
2026-06-20T11:21:58.9387912Z             {
2026-06-20T11:21:58.9388066Z               "path": "crates/spt-daemon/src/release.rs",
2026-06-20T11:21:58.9388174Z               "line": 492
2026-06-20T11:21:58.9388288Z             },
2026-06-20T11:21:58.9388385Z             {
2026-06-20T11:21:58.9388536Z               "path": "crates/spt-daemon/src/release.rs",
2026-06-20T11:21:58.9388657Z               "line": 546
2026-06-20T11:21:58.9388752Z             }
2026-06-20T11:21:58.9388870Z           ]
2026-06-20T11:21:58.9389070Z         },
2026-06-20T11:21:58.9389184Z         "int": {
2026-06-20T11:21:58.9389303Z           "complete": false,
2026-06-20T11:21:58.9389541Z           "evidence": []
2026-06-20T11:21:58.9389662Z         },
2026-06-20T11:21:58.9389766Z         "unit": {
2026-06-20T11:21:58.9389884Z           "complete": true,
2026-06-20T11:21:58.9390000Z           "evidence": [
2026-06-20T11:21:58.9390113Z             {
2026-06-20T11:21:58.9390262Z               "path": "crates/spt-daemon/src/adapter_update.rs",
2026-06-20T11:21:58.9390382Z               "line": 272
2026-06-20T11:21:58.9390486Z             },
2026-06-20T11:21:58.9390596Z             {
2026-06-20T11:21:58.9390743Z               "path": "crates/spt-daemon/src/adapter_update.rs",
2026-06-20T11:21:58.9390857Z               "line": 286
2026-06-20T11:21:58.9390978Z             },
2026-06-20T11:21:58.9391081Z             {
2026-06-20T11:21:58.9391233Z               "path": "crates/spt-daemon/src/adapter_update.rs",
2026-06-20T11:21:58.9391357Z               "line": 300
2026-06-20T11:21:58.9391464Z             },
2026-06-20T11:21:58.9391570Z             {
2026-06-20T11:21:58.9391718Z               "path": "crates/spt-daemon/src/adapter_update.rs",
2026-06-20T11:21:58.9391846Z               "line": 314
2026-06-20T11:21:58.9391957Z             },
2026-06-20T11:21:58.9392075Z             {
2026-06-20T11:21:58.9392233Z               "path": "crates/spt-daemon/src/adapter_update.rs",
2026-06-20T11:21:58.9392342Z               "line": 348
2026-06-20T11:21:58.9392456Z             },
2026-06-20T11:21:58.9392567Z             {
2026-06-20T11:21:58.9392766Z               "path": "crates/spt-runtime/src/manifest.rs",
2026-06-20T11:21:58.9392872Z               "line": 1071
2026-06-20T11:21:58.9393005Z             }
2026-06-20T11:21:58.9393129Z           ]
2026-06-20T11:21:58.9393240Z         }
2026-06-20T11:21:58.9393343Z       }
2026-06-20T11:21:58.9393448Z     },
2026-06-20T11:21:58.9393569Z     {
2026-06-20T11:21:58.9393687Z       "id": "REQ-UPD-6",
2026-06-20T11:21:58.9394518Z       "title": "Platform-targeted update sets and debug rollout: signed multi-platform update metadata, recipient platform selection, channel-scoped monotonic counters, debug-channel opt-in via release-key overlay, local staging plus pull-based peer propagation, and maintainer-only convergence tooling (ADR-0016)",
2026-06-20T11:21:58.9394641Z       "requiredStages": [
2026-06-20T11:21:58.9394746Z         "doc",
2026-06-20T11:21:58.9394852Z         "impl",
2026-06-20T11:21:58.9394965Z         "unit",
2026-06-20T11:21:58.9395076Z         "int"
2026-06-20T11:21:58.9395185Z       ],
2026-06-20T11:21:58.9395299Z       "stages": {
2026-06-20T11:21:58.9395414Z         "doc": {
2026-06-20T11:21:58.9395533Z           "complete": true,
2026-06-20T11:21:58.9395643Z           "evidence": [
2026-06-20T11:21:58.9395754Z             {
2026-06-20T11:21:58.9395905Z               "path": "docs/DEBUG-CONVERGE-PLAN.md",
2026-06-20T11:21:58.9396025Z               "line": 3
2026-06-20T11:21:58.9396139Z             },
2026-06-20T11:21:58.9396253Z             {
2026-06-20T11:21:58.9396383Z               "path": "docs/DEBUG-ROLLOUT.md",
2026-06-20T11:21:58.9396506Z               "line": 3
2026-06-20T11:21:58.9396619Z             },
2026-06-20T11:21:58.9396739Z             {
2026-06-20T11:21:58.9396922Z               "path": "docs/adr/0016-platform-targeted-update-sets.md",
2026-06-20T11:21:58.9397027Z               "line": 3
2026-06-20T11:21:58.9397142Z             }
2026-06-20T11:21:58.9397357Z           ]
2026-06-20T11:21:58.9397466Z         },
2026-06-20T11:21:58.9397580Z         "impl": {
2026-06-20T11:21:58.9397709Z           "complete": true,
2026-06-20T11:21:58.9397833Z           "evidence": [
2026-06-20T11:21:58.9397943Z             {
2026-06-20T11:21:58.9398090Z               "path": "crates/spt-daemon/src/applyhost.rs",
2026-06-20T11:21:58.9398200Z               "line": 76
2026-06-20T11:21:58.9398316Z             },
2026-06-20T11:21:58.9398429Z             {
2026-06-20T11:21:58.9398577Z               "path": "crates/spt-daemon/src/applyhost.rs",
2026-06-20T11:21:58.9398696Z               "line": 212
2026-06-20T11:21:58.9398811Z             },
2026-06-20T11:21:58.9399077Z             {
2026-06-20T11:21:58.9399226Z               "path": "crates/spt-daemon/src/propagate.rs",
2026-06-20T11:21:58.9399359Z               "line": 69
2026-06-20T11:21:58.9399467Z             },
2026-06-20T11:21:58.9399582Z             {
2026-06-20T11:21:58.9399725Z               "path": "crates/spt-daemon/src/propagate.rs",
2026-06-20T11:21:58.9399839Z               "line": 133
2026-06-20T11:21:58.9399959Z             },
2026-06-20T11:21:58.9400064Z             {
2026-06-20T11:21:58.9400207Z               "path": "crates/spt-daemon/src/propagate.rs",
2026-06-20T11:21:58.9400326Z               "line": 243
2026-06-20T11:21:58.9400431Z             },
2026-06-20T11:21:58.9400546Z             {
2026-06-20T11:21:58.9400688Z               "path": "crates/spt-daemon/src/propagate.rs",
2026-06-20T11:21:58.9400812Z               "line": 406
2026-06-20T11:21:58.9400918Z             },
2026-06-20T11:21:58.9401022Z             {
2026-06-20T11:21:58.9401161Z               "path": "crates/spt-daemon/src/propagate.rs",
2026-06-20T11:21:58.9401275Z               "line": 534
2026-06-20T11:21:58.9401394Z             },
2026-06-20T11:21:58.9401500Z             {
2026-06-20T11:21:58.9401646Z               "path": "crates/spt-daemon/src/propagate.rs",
2026-06-20T11:21:58.9401755Z               "line": 548
2026-06-20T11:21:58.9401860Z             },
2026-06-20T11:21:58.9401977Z             {
2026-06-20T11:21:58.9402110Z               "path": "crates/spt-daemon/src/propagate.rs",
2026-06-20T11:21:58.9402225Z               "line": 603
2026-06-20T11:21:58.9402330Z             },
2026-06-20T11:21:58.9402439Z             {
2026-06-20T11:21:58.9402578Z               "path": "crates/spt-daemon/src/propagate.rs",
2026-06-20T11:21:58.9402692Z               "line": 634
2026-06-20T11:21:58.9402803Z             },
2026-06-20T11:21:58.9402912Z             {
2026-06-20T11:21:58.9403064Z               "path": "crates/spt-daemon/src/pump/update.rs",
2026-06-20T11:21:58.9403174Z               "line": 137
2026-06-20T11:21:58.9403293Z             },
2026-06-20T11:21:58.9403398Z             {
2026-06-20T11:21:58.9403541Z               "path": "crates/spt-daemon/src/pump/update.rs",
2026-06-20T11:21:58.9403660Z               "line": 184
2026-06-20T11:21:58.9403761Z             },
2026-06-20T11:21:58.9403888Z             {
2026-06-20T11:21:58.9404023Z               "path": "crates/spt-daemon/src/relcache.rs",
2026-06-20T11:21:58.9404133Z               "line": 78
2026-06-20T11:21:58.9404247Z             },
2026-06-20T11:21:58.9404343Z             {
2026-06-20T11:21:58.9404481Z               "path": "crates/spt-daemon/src/relcache.rs",
2026-06-20T11:21:58.9404603Z               "line": 114
2026-06-20T11:21:58.9404713Z             },
2026-06-20T11:21:58.9404821Z             {
2026-06-20T11:21:58.9404967Z               "path": "crates/spt-daemon/src/relcache.rs",
2026-06-20T11:21:58.9405079Z               "line": 185
2026-06-20T11:21:58.9405183Z             },
2026-06-20T11:21:58.9405292Z             {
2026-06-20T11:21:58.9405421Z               "path": "crates/spt-daemon/src/relcache.rs",
2026-06-20T11:21:58.9405544Z               "line": 260
2026-06-20T11:21:58.9405655Z             },
2026-06-20T11:21:58.9405769Z             {
2026-06-20T11:21:58.9405907Z               "path": "crates/spt-daemon/src/relcache.rs",
2026-06-20T11:21:58.9406028Z               "line": 292
2026-06-20T11:21:58.9406237Z             },
2026-06-20T11:21:58.9406352Z             {
2026-06-20T11:21:58.9406494Z               "path": "crates/spt-daemon/src/relcache.rs",
2026-06-20T11:21:58.9406605Z               "line": 323
2026-06-20T11:21:58.9406714Z             },
2026-06-20T11:21:58.9406823Z             {
2026-06-20T11:21:58.9406963Z               "path": "crates/spt-daemon/src/relcache.rs",
2026-06-20T11:21:58.9407070Z               "line": 346
2026-06-20T11:21:58.9407179Z             },
2026-06-20T11:21:58.9407284Z             {
2026-06-20T11:21:58.9407430Z               "path": "crates/spt-daemon/src/relcache.rs",
2026-06-20T11:21:58.9407549Z               "line": 388
2026-06-20T11:21:58.9407787Z             },
2026-06-20T11:21:58.9407888Z             {
2026-06-20T11:21:58.9408036Z               "path": "crates/spt-daemon/src/relcache.rs",
2026-06-20T11:21:58.9408145Z               "line": 398
2026-06-20T11:21:58.9408251Z             },
2026-06-20T11:21:58.9408356Z             {
2026-06-20T11:21:58.9408503Z               "path": "crates/spt-daemon/src/relcache.rs",
2026-06-20T11:21:58.9408632Z               "line": 410
2026-06-20T11:21:58.9408736Z             },
2026-06-20T11:21:58.9408847Z             {
2026-06-20T11:21:58.9409060Z               "path": "crates/spt-daemon/src/relcache.rs",
2026-06-20T11:21:58.9409171Z               "line": 420
2026-06-20T11:21:58.9409280Z             },
2026-06-20T11:21:58.9409404Z             {
2026-06-20T11:21:58.9409544Z               "path": "crates/spt-daemon/src/relcache.rs",
2026-06-20T11:21:58.9409651Z               "line": 439
2026-06-20T11:21:58.9409767Z             },
2026-06-20T11:21:58.9409877Z             {
2026-06-20T11:21:58.9410023Z               "path": "crates/spt-daemon/src/relcache.rs",
2026-06-20T11:21:58.9410137Z               "line": 449
2026-06-20T11:21:58.9410243Z             },
2026-06-20T11:21:58.9410352Z             {
2026-06-20T11:21:58.9410486Z               "path": "crates/spt-daemon/src/release.rs",
2026-06-20T11:21:58.9410600Z               "line": 94
2026-06-20T11:21:58.9410704Z             },
2026-06-20T11:21:58.9410820Z             {
2026-06-20T11:21:58.9410939Z               "path": "crates/spt-daemon/src/release.rs",
2026-06-20T11:21:58.9411063Z               "line": 120
2026-06-20T11:21:58.9411172Z             },
2026-06-20T11:21:58.9411286Z             {
2026-06-20T11:21:58.9411426Z               "path": "crates/spt-daemon/src/release.rs",
2026-06-20T11:21:58.9411525Z               "line": 135
2026-06-20T11:21:58.9411635Z             },
2026-06-20T11:21:58.9411741Z             {
2026-06-20T11:21:58.9411873Z               "path": "crates/spt-daemon/src/release.rs",
2026-06-20T11:21:58.9411992Z               "line": 162
2026-06-20T11:21:58.9412108Z             },
2026-06-20T11:21:58.9412206Z             {
2026-06-20T11:21:58.9412344Z               "path": "crates/spt-daemon/src/release.rs",
2026-06-20T11:21:58.9412453Z               "line": 174
2026-06-20T11:21:58.9412566Z             },
2026-06-20T11:21:58.9412680Z             {
2026-06-20T11:21:58.9412820Z               "path": "crates/spt-daemon/src/release.rs",
2026-06-20T11:21:58.9412932Z               "line": 185
2026-06-20T11:21:58.9413038Z             },
2026-06-20T11:21:58.9413143Z             {
2026-06-20T11:21:58.9413276Z               "path": "crates/spt-daemon/src/release.rs",
2026-06-20T11:21:58.9413396Z               "line": 451
2026-06-20T11:21:58.9413505Z             },
2026-06-20T11:21:58.9413620Z             {
2026-06-20T11:21:58.9413749Z               "path": "crates/spt-daemon/src/release.rs",
2026-06-20T11:21:58.9413881Z               "line": 573
2026-06-20T11:21:58.9414011Z             },
2026-06-20T11:21:58.9414130Z             {
2026-06-20T11:21:58.9414278Z               "path": "crates/spt-daemon/src/update.rs",
2026-06-20T11:21:58.9414397Z               "line": 171
2026-06-20T11:21:58.9414511Z             },
2026-06-20T11:21:58.9414613Z             {
2026-06-20T11:21:58.9414749Z               "path": "crates/spt-net/src/net/update.rs",
2026-06-20T11:21:58.9414869Z               "line": 65
2026-06-20T11:21:58.9415078Z             },
2026-06-20T11:21:58.9415201Z             {
2026-06-20T11:21:58.9415335Z               "path": "crates/spt-net/src/net/update.rs",
2026-06-20T11:21:58.9415447Z               "line": 71
2026-06-20T11:21:58.9415557Z             },
2026-06-20T11:21:58.9415676Z             {
2026-06-20T11:21:58.9415809Z               "path": "crates/spt-net/src/net/update.rs",
2026-06-20T11:21:58.9415934Z               "line": 77
2026-06-20T11:21:58.9416053Z             },
2026-06-20T11:21:58.9416157Z             {
2026-06-20T11:21:58.9416292Z               "path": "crates/xtask/src/main.rs",
2026-06-20T11:21:58.9416406Z               "line": 778
2026-06-20T11:21:58.9416621Z             },
2026-06-20T11:21:58.9416734Z             {
2026-06-20T11:21:58.9416869Z               "path": "crates/xtask/src/main.rs",
2026-06-20T11:21:58.9416982Z               "line": 795
2026-06-20T11:21:58.9417092Z             },
2026-06-20T11:21:58.9417208Z             {
2026-06-20T11:21:58.9417359Z               "path": "crates/xtask/src/main.rs",
2026-06-20T11:21:58.9417480Z               "line": 838
2026-06-20T11:21:58.9417584Z             },
2026-06-20T11:21:58.9417702Z             {
2026-06-20T11:21:58.9417849Z               "path": "crates/xtask/src/main.rs",
2026-06-20T11:21:58.9417967Z               "line": 981
2026-06-20T11:21:58.9418071Z             },
2026-06-20T11:21:58.9418176Z             {
2026-06-20T11:21:58.9418309Z               "path": "crates/xtask/src/main.rs",
2026-06-20T11:21:58.9418424Z               "line": 1131
2026-06-20T11:21:58.9418534Z             }
2026-06-20T11:21:58.9418638Z           ]
2026-06-20T11:21:58.9418743Z         },
2026-06-20T11:21:58.9418863Z         "int": {
2026-06-20T11:21:58.9419068Z           "complete": true,
2026-06-20T11:21:58.9419178Z           "evidence": [
2026-06-20T11:21:58.9419291Z             {
2026-06-20T11:21:58.9419465Z               "path": "crates/spt-daemon/tests/propagate.rs",
2026-06-20T11:21:58.9419588Z               "line": 569
2026-06-20T11:21:58.9419697Z             },
2026-06-20T11:21:58.9419803Z             {
2026-06-20T11:21:58.9419949Z               "path": "docs/DEBUG-CONVERGE-PLAN.md",
2026-06-20T11:21:58.9420070Z               "line": 135
2026-06-20T11:21:58.9420178Z             }
2026-06-20T11:21:58.9420293Z           ]
2026-06-20T11:21:58.9420404Z         },
2026-06-20T11:21:58.9420507Z         "unit": {
2026-06-20T11:21:58.9420630Z           "complete": true,
2026-06-20T11:21:58.9420746Z           "evidence": [
2026-06-20T11:21:58.9420864Z             {
2026-06-20T11:21:58.9421007Z               "path": "crates/spt-daemon/src/applyhost.rs",
2026-06-20T11:21:58.9421127Z               "line": 626
2026-06-20T11:21:58.9421250Z             },
2026-06-20T11:21:58.9421361Z             {
2026-06-20T11:21:58.9421508Z               "path": "crates/spt-daemon/src/applyhost.rs",
2026-06-20T11:21:58.9421623Z               "line": 675
2026-06-20T11:21:58.9421742Z             },
2026-06-20T11:21:58.9421856Z             {
2026-06-20T11:21:58.9421991Z               "path": "crates/spt-daemon/src/propagate.rs",
2026-06-20T11:21:58.9422114Z               "line": 696
2026-06-20T11:21:58.9422223Z             },
2026-06-20T11:21:58.9422334Z             {
2026-06-20T11:21:58.9422476Z               "path": "crates/spt-daemon/src/relcache.rs",
2026-06-20T11:21:58.9422591Z               "line": 513
2026-06-20T11:21:58.9422691Z             },
2026-06-20T11:21:58.9422790Z             {
2026-06-20T11:21:58.9422952Z               "path": "crates/spt-daemon/src/relcache.rs",
2026-06-20T11:21:58.9423065Z               "line": 638
2026-06-20T11:21:58.9431491Z             },
2026-06-20T11:21:58.9431616Z             {
2026-06-20T11:21:58.9431796Z               "path": "crates/spt-daemon/src/relcache.rs",
2026-06-20T11:21:58.9431907Z               "line": 675
2026-06-20T11:21:58.9432016Z             },
2026-06-20T11:21:58.9432125Z             {
2026-06-20T11:21:58.9432260Z               "path": "crates/spt-daemon/src/release.rs",
2026-06-20T11:21:58.9432589Z               "line": 947
2026-06-20T11:21:58.9432693Z             },
2026-06-20T11:21:58.9432793Z             {
2026-06-20T11:21:58.9432997Z               "path": "crates/spt-daemon/src/release.rs",
2026-06-20T11:21:58.9433093Z               "line": 969
2026-06-20T11:21:58.9433200Z             },
2026-06-20T11:21:58.9433288Z             {
2026-06-20T11:21:58.9433426Z               "path": "crates/spt-daemon/src/release.rs",
2026-06-20T11:21:58.9433522Z               "line": 986
2026-06-20T11:21:58.9433629Z             },
2026-06-20T11:21:58.9433728Z             {
2026-06-20T11:21:58.9433863Z               "path": "crates/spt-daemon/src/release.rs",
2026-06-20T11:21:58.9434067Z               "line": 1001
2026-06-20T11:21:58.9434173Z             },
2026-06-20T11:21:58.9434273Z             {
2026-06-20T11:21:58.9434396Z               "path": "crates/spt-daemon/src/release.rs",
2026-06-20T11:21:58.9434511Z               "line": 1027
2026-06-20T11:21:58.9434616Z             },
2026-06-20T11:21:58.9434715Z             {
2026-06-20T11:21:58.9434840Z               "path": "crates/spt-daemon/src/update.rs",
2026-06-20T11:21:58.9434945Z               "line": 457
2026-06-20T11:21:58.9435045Z             },
2026-06-20T11:21:58.9435137Z             {
2026-06-20T11:21:58.9435288Z               "path": "crates/spt-daemon/tests/propagate.rs",
2026-06-20T11:21:58.9435398Z               "line": 338
2026-06-20T11:21:58.9435494Z             },
2026-06-20T11:21:58.9435598Z             {
2026-06-20T11:21:58.9435723Z               "path": "crates/spt/src/cli.rs",
2026-06-20T11:21:58.9435837Z               "line": 10549
2026-06-20T11:21:58.9435946Z             },
2026-06-20T11:21:58.9436042Z             {
2026-06-20T11:21:58.9436170Z               "path": "crates/xtask/src/main.rs",
2026-06-20T11:21:58.9436264Z               "line": 1260
2026-06-20T11:21:58.9436369Z             },
2026-06-20T11:21:58.9436473Z             {
2026-06-20T11:21:58.9436610Z               "path": "docs/DEBUG-CONVERGE-PLAN.md",
2026-06-20T11:21:58.9436725Z               "line": 130
2026-06-20T11:21:58.9436821Z             }
2026-06-20T11:21:58.9436920Z           ]
2026-06-20T11:21:58.9437016Z         }
2026-06-20T11:21:58.9437121Z       }
2026-06-20T11:21:58.9437216Z     },
2026-06-20T11:21:58.9437311Z     {
2026-06-20T11:21:58.9437417Z       "id": "REQ-UPD-7",
2026-06-20T11:21:58.9439687Z       "title": "Origin-source update bootstrap (`spt update fetch`): pull the latest signed release directly from the GitHub release origin (`SaberMage/spt-releases`) — the per-platform artifact + its `<asset>.release.json` SignedRelease metadata — and stage it through the EXISTING verify→stage pipeline (the same `plan_verified` gate: two-key signature + channel + monotonic rollback floor + SHA-256), after which the normal consent-notif / `spt update apply` flow is unchanged. Closes the peer-only-discovery gap (REQ-UPD-1): a first-in-fleet / isolated node can update with no peer to pull from. The signed-release anchor keeps the GitHub transport untrusted-but-verified.",
2026-06-20T11:21:58.9439811Z       "requiredStages": [
2026-06-20T11:21:58.9439917Z         "impl",
2026-06-20T11:21:58.9440011Z         "unit"
2026-06-20T11:21:58.9440116Z       ],
2026-06-20T11:21:58.9440218Z       "stages": {
2026-06-20T11:21:58.9440326Z         "doc": {
2026-06-20T11:21:58.9440435Z           "complete": false,
2026-06-20T11:21:58.9440537Z           "evidence": []
2026-06-20T11:21:58.9440641Z         },
2026-06-20T11:21:58.9440736Z         "impl": {
2026-06-20T11:21:58.9440837Z           "complete": true,
2026-06-20T11:21:58.9440937Z           "evidence": [
2026-06-20T11:21:58.9441027Z             {
2026-06-20T11:21:58.9441157Z               "path": "crates/spt/src/cli.rs",
2026-06-20T11:21:58.9441257Z               "line": 2626
2026-06-20T11:21:58.9441351Z             }
2026-06-20T11:21:58.9441438Z           ]
2026-06-20T11:21:58.9441534Z         },
2026-06-20T11:21:58.9441623Z         "int": {
2026-06-20T11:21:58.9441736Z           "complete": false,
2026-06-20T11:21:58.9441832Z           "evidence": []
2026-06-20T11:21:58.9442046Z         },
2026-06-20T11:21:58.9442156Z         "unit": {
2026-06-20T11:21:58.9442262Z           "complete": true,
2026-06-20T11:21:58.9442380Z           "evidence": [
2026-06-20T11:21:58.9442481Z             {
2026-06-20T11:21:58.9442601Z               "path": "crates/spt/src/cli.rs",
2026-06-20T11:21:58.9442704Z               "line": 10525
2026-06-20T11:21:58.9442844Z             }
2026-06-20T11:21:58.9442943Z           ]
2026-06-20T11:21:58.9443043Z         }
2026-06-20T11:21:58.9443145Z       }
2026-06-20T11:21:58.9443229Z     },
2026-06-20T11:21:58.9443334Z     {
2026-06-20T11:21:58.9443440Z       "id": "REQ-UPD-8",
2026-06-20T11:21:58.9446035Z       "title": "Platform-safe `spt update fetch` + apply platform-guard (v0.3.1 cross-OS brick fix): `spt update fetch` stages the signed multi-platform `SignedUpdateSet` (`update-set.json` + every platform artifact it names), never a platform-blind single `SignedRelease`, so local apply selects `current_platform()` and P2P re-serve lets each peer select ITS own platform. Defense-in-depth: `apply_staged` REFUSES a staged single-release artifact unless it is platform-stamped for THIS node (an unstamped pre-v0.3.2 single, or a single stamped for another OS, fail-safe refuses — the guard that alone prevents the v0.3.1 brick where a Linux ELF was applied as `spt.exe`). UX: a friendly post-apply message (`Updated spt-core to vX.Y.Z.` + changelog URL) driven by an additive `product_version` metadata field, with a release-counter fallback when absent.",
2026-06-20T11:21:58.9446163Z       "requiredStages": [
2026-06-20T11:21:58.9446269Z         "impl",
2026-06-20T11:21:58.9446373Z         "unit"
2026-06-20T11:21:58.9446477Z       ],
2026-06-20T11:21:58.9446579Z       "stages": {
2026-06-20T11:21:58.9446674Z         "doc": {
2026-06-20T11:21:58.9446778Z           "complete": false,
2026-06-20T11:21:58.9446886Z           "evidence": []
2026-06-20T11:21:58.9446973Z         },
2026-06-20T11:21:58.9447071Z         "impl": {
2026-06-20T11:21:58.9447184Z           "complete": true,
2026-06-20T11:21:58.9447295Z           "evidence": [
2026-06-20T11:21:58.9447395Z             {
2026-06-20T11:21:58.9447537Z               "path": "crates/spt-daemon/src/applyhost.rs",
2026-06-20T11:21:58.9447648Z               "line": 77
2026-06-20T11:21:58.9447747Z             },
2026-06-20T11:21:58.9447852Z             {
2026-06-20T11:21:58.9447996Z               "path": "crates/spt-daemon/src/relcache.rs",
2026-06-20T11:21:58.9448090Z               "line": 49
2026-06-20T11:21:58.9448191Z             },
2026-06-20T11:21:58.9448292Z             {
2026-06-20T11:21:58.9448415Z               "path": "crates/spt-daemon/src/relcache.rs",
2026-06-20T11:21:58.9448515Z               "line": 152
2026-06-20T11:21:58.9448616Z             },
2026-06-20T11:21:58.9448710Z             {
2026-06-20T11:21:58.9448840Z               "path": "crates/spt-daemon/src/relcache.rs",
2026-06-20T11:21:58.9449034Z               "line": 215
2026-06-20T11:21:58.9449136Z             },
2026-06-20T11:21:58.9449245Z             {
2026-06-20T11:21:58.9449377Z               "path": "crates/spt-daemon/src/relcache.rs",
2026-06-20T11:21:58.9449467Z               "line": 230
2026-06-20T11:21:58.9449572Z             },
2026-06-20T11:21:58.9449666Z             {
2026-06-20T11:21:58.9449799Z               "path": "crates/spt-daemon/src/relcache.rs",
2026-06-20T11:21:58.9449905Z               "line": 247
2026-06-20T11:21:58.9449995Z             },
2026-06-20T11:21:58.9450099Z             {
2026-06-20T11:21:58.9450229Z               "path": "crates/spt-daemon/src/relcache.rs",
2026-06-20T11:21:58.9450333Z               "line": 269
2026-06-20T11:21:58.9450433Z             },
2026-06-20T11:21:58.9450529Z             {
2026-06-20T11:21:58.9450662Z               "path": "crates/spt-daemon/src/release.rs",
2026-06-20T11:21:58.9450763Z               "line": 66
2026-06-20T11:21:58.9450868Z             },
2026-06-20T11:21:58.9450963Z             {
2026-06-20T11:21:58.9451082Z               "path": "crates/spt-daemon/src/release.rs",
2026-06-20T11:21:58.9451306Z               "line": 154
2026-06-20T11:21:58.9451407Z             },
2026-06-20T11:21:58.9451507Z             {
2026-06-20T11:21:58.9451630Z               "path": "crates/spt/src/cli.rs",
2026-06-20T11:21:58.9451737Z               "line": 2430
2026-06-20T11:21:58.9451836Z             },
2026-06-20T11:21:58.9451941Z             {
2026-06-20T11:21:58.9452056Z               "path": "crates/spt/src/cli.rs",
2026-06-20T11:21:58.9452155Z               "line": 2493
2026-06-20T11:21:58.9452254Z             },
2026-06-20T11:21:58.9452354Z             {
2026-06-20T11:21:58.9452474Z               "path": "crates/spt/src/cli.rs",
2026-06-20T11:21:58.9452673Z               "line": 2503
2026-06-20T11:21:58.9452779Z             },
2026-06-20T11:21:58.9452879Z             {
2026-06-20T11:21:58.9453003Z               "path": "crates/spt/src/cli.rs",
2026-06-20T11:21:58.9453103Z               "line": 2510
2026-06-20T11:21:58.9453212Z             },
2026-06-20T11:21:58.9453308Z             {
2026-06-20T11:21:58.9453423Z               "path": "crates/spt/src/cli.rs",
2026-06-20T11:21:58.9453527Z               "line": 2627
2026-06-20T11:21:58.9453627Z             },
2026-06-20T11:21:58.9453728Z             {
2026-06-20T11:21:58.9453842Z               "path": "crates/xtask/src/main.rs",
2026-06-20T11:21:58.9453952Z               "line": 480
2026-06-20T11:21:58.9454057Z             },
2026-06-20T11:21:58.9454151Z             {
2026-06-20T11:21:58.9454266Z               "path": "crates/xtask/src/main.rs",
2026-06-20T11:21:58.9454377Z               "line": 494
2026-06-20T11:21:58.9454480Z             }
2026-06-20T11:21:58.9454579Z           ]
2026-06-20T11:21:58.9454685Z         },
2026-06-20T11:21:58.9454787Z         "int": {
2026-06-20T11:21:58.9454896Z           "complete": false,
2026-06-20T11:21:58.9455012Z           "evidence": []
2026-06-20T11:21:58.9455111Z         },
2026-06-20T11:21:58.9455221Z         "unit": {
2026-06-20T11:21:58.9455326Z           "complete": true,
2026-06-20T11:21:58.9455440Z           "evidence": [
2026-06-20T11:21:58.9455540Z             {
2026-06-20T11:21:58.9455684Z               "path": "crates/spt-daemon/src/applyhost.rs",
2026-06-20T11:21:58.9455788Z               "line": 476
2026-06-20T11:21:58.9455885Z             },
2026-06-20T11:21:58.9455984Z             {
2026-06-20T11:21:58.9456112Z               "path": "crates/spt-daemon/src/relcache.rs",
2026-06-20T11:21:58.9456218Z               "line": 580
2026-06-20T11:21:58.9456327Z             },
2026-06-20T11:21:58.9456427Z             {
2026-06-20T11:21:58.9456548Z               "path": "crates/spt/src/cli.rs",
2026-06-20T11:21:58.9456651Z               "line": 10527
2026-06-20T11:21:58.9456756Z             },
2026-06-20T11:21:58.9456853Z             {
2026-06-20T11:21:58.9456975Z               "path": "crates/spt/src/cli.rs",
2026-06-20T11:21:58.9457086Z               "line": 10549
2026-06-20T11:21:58.9457187Z             }
2026-06-20T11:21:58.9457290Z           ]
2026-06-20T11:21:58.9457380Z         }
2026-06-20T11:21:58.9457485Z       }
2026-06-20T11:21:58.9457584Z     },
2026-06-20T11:21:58.9457688Z     {
2026-06-20T11:21:58.9457798Z       "id": "REQ-UPD-9",
2026-06-20T11:21:58.9460489Z       "title": "`gh_release` adapter [update] avenue (optional signing): an adapter declares `[update] avenue = \"gh_release\", repo = \"user/repo\"` (+ optional `asset`, default `adapter.spt`; + optional Ed25519 `signing_key`); spt-core's ripple compares the repo's LATEST GitHub release version against the installed adapter version and, when newer, auto-updates by fetching the release `.spt` archive (the REQ-INSTALL-9 `--release` fetch primitive) → verifies the `.spt` against `signing_key` if declared, else HTTPS+GitHub first-acquisition trust → re-extracts + re-registers the adapter root. Lets a harness adapter ship updates from its own GitHub releases with NO signing tooling or plugin coupling (removes the perri file_pull/delegated avenue blockers). Acquisition-trust mirrors `--release` + the installer first-fetch; does not alter spt-core self-update (REQ-UPD-1..8).",
2026-06-20T11:21:58.9460727Z       "requiredStages": [
2026-06-20T11:21:58.9460832Z         "doc",
2026-06-20T11:21:58.9460936Z         "impl",
2026-06-20T11:21:58.9461042Z         "unit"
2026-06-20T11:21:58.9461137Z       ],
2026-06-20T11:21:58.9461246Z       "stages": {
2026-06-20T11:21:58.9461348Z         "doc": {
2026-06-20T11:21:58.9461447Z           "complete": true,
2026-06-20T11:21:58.9461561Z           "evidence": [
2026-06-20T11:21:58.9461657Z             {
2026-06-20T11:21:58.9461776Z               "path": "CONTEXT.md",
2026-06-20T11:21:58.9461885Z               "line": 93
2026-06-20T11:21:58.9461992Z             },
2026-06-20T11:21:58.9462195Z             {
2026-06-20T11:21:58.9462301Z               "path": "docs/MANIFEST.md",
2026-06-20T11:21:58.9462410Z               "line": 285
2026-06-20T11:21:58.9462510Z             }
2026-06-20T11:21:58.9462616Z           ]
2026-06-20T11:21:58.9462711Z         },
2026-06-20T11:21:58.9462818Z         "impl": {
2026-06-20T11:21:58.9462933Z           "complete": true,
2026-06-20T11:21:58.9463044Z           "evidence": [
2026-06-20T11:21:58.9463138Z             {
2026-06-20T11:21:58.9463286Z               "path": "crates/spt-daemon/src/adapter_update.rs",
2026-06-20T11:21:58.9463397Z               "line": 128
2026-06-20T11:21:58.9463495Z             },
2026-06-20T11:21:58.9463597Z             {
2026-06-20T11:21:58.9463740Z               "path": "crates/spt-daemon/src/release.rs",
2026-06-20T11:21:58.9463844Z               "line": 533
2026-06-20T11:21:58.9463950Z             },
2026-06-20T11:21:58.9464044Z             {
2026-06-20T11:21:58.9464187Z               "path": "crates/spt-runtime/src/manifest.rs",
2026-06-20T11:21:58.9464293Z               "line": 459
2026-06-20T11:21:58.9464398Z             },
2026-06-20T11:21:58.9464507Z             {
2026-06-20T11:21:58.9464632Z               "path": "crates/spt-runtime/src/manifest.rs",
2026-06-20T11:21:58.9464741Z               "line": 505
2026-06-20T11:21:58.9464846Z             },
2026-06-20T11:21:58.9464956Z             {
2026-06-20T11:21:58.9465083Z               "path": "crates/spt-runtime/src/manifest.rs",
2026-06-20T11:21:58.9465192Z               "line": 928
2026-06-20T11:21:58.9465296Z             },
2026-06-20T11:21:58.9465390Z             {
2026-06-20T11:21:58.9465524Z               "path": "crates/spt-runtime/src/registry.rs",
2026-06-20T11:21:58.9465630Z               "line": 302
2026-06-20T11:21:58.9465733Z             },
2026-06-20T11:21:58.9465834Z             {
2026-06-20T11:21:58.9465954Z               "path": "crates/spt/src/cli.rs",
2026-06-20T11:21:58.9466062Z               "line": 5675
2026-06-20T11:21:58.9466159Z             },
2026-06-20T11:21:58.9466263Z             {
2026-06-20T11:21:58.9466386Z               "path": "crates/spt/src/cli.rs",
2026-06-20T11:21:58.9466493Z               "line": 5720
2026-06-20T11:21:58.9466597Z             },
2026-06-20T11:21:58.9466691Z             {
2026-06-20T11:21:58.9466817Z               "path": "crates/spt/src/cli.rs",
2026-06-20T11:21:58.9466916Z               "line": 5857
2026-06-20T11:21:58.9467016Z             },
2026-06-20T11:21:58.9467113Z             {
2026-06-20T11:21:58.9467230Z               "path": "crates/spt/src/cli.rs",
2026-06-20T11:21:58.9467340Z               "line": 5878
2026-06-20T11:21:58.9467442Z             },
2026-06-20T11:21:58.9467545Z             {
2026-06-20T11:21:58.9467660Z               "path": "crates/spt/src/cli.rs",
2026-06-20T11:21:58.9467761Z               "line": 5901
2026-06-20T11:21:58.9467865Z             },
2026-06-20T11:21:58.9467964Z             {
2026-06-20T11:21:58.9468074Z               "path": "crates/spt/src/cli.rs",
2026-06-20T11:21:58.9468182Z               "line": 5928
2026-06-20T11:21:58.9468286Z             }
2026-06-20T11:21:58.9468386Z           ]
2026-06-20T11:21:58.9468477Z         },
2026-06-20T11:21:58.9468576Z         "int": {
2026-06-20T11:21:58.9468677Z           "complete": false,
2026-06-20T11:21:58.9468792Z           "evidence": []
2026-06-20T11:21:58.9469040Z         },
2026-06-20T11:21:58.9469145Z         "unit": {
2026-06-20T11:21:58.9469244Z           "complete": true,
2026-06-20T11:21:58.9469360Z           "evidence": [
2026-06-20T11:21:58.9469449Z             {
2026-06-20T11:21:58.9469592Z               "path": "crates/spt-daemon/src/adapter_update.rs",
2026-06-20T11:21:58.9469699Z               "line": 259
2026-06-20T11:21:58.9469797Z             },
2026-06-20T11:21:58.9469893Z             {
2026-06-20T11:21:58.9470018Z               "path": "crates/spt-daemon/src/release.rs",
2026-06-20T11:21:58.9470126Z               "line": 657
2026-06-20T11:21:58.9470227Z             },
2026-06-20T11:21:58.9470333Z             {
2026-06-20T11:21:58.9470573Z               "path": "crates/spt-runtime/src/manifest.rs",
2026-06-20T11:21:58.9470678Z               "line": 1107
2026-06-20T11:21:58.9470786Z             },
2026-06-20T11:21:58.9470881Z             {
2026-06-20T11:21:58.9471006Z               "path": "crates/spt/src/cli.rs",
2026-06-20T11:21:58.9471110Z               "line": 7565
2026-06-20T11:21:58.9471215Z             }
2026-06-20T11:21:58.9471321Z           ]
2026-06-20T11:21:58.9471420Z         }
2026-06-20T11:21:58.9471525Z       }
2026-06-20T11:21:58.9471626Z     },
2026-06-20T11:21:58.9471725Z     {
2026-06-20T11:21:58.9471834Z       "id": "REQ-WHOAMI-1",
2026-06-20T11:21:58.9473518Z       "title": "`spt whoami` is a thin ALIAS for `spt endpoint list` (full output: the SELF pin + the subnet roster) — the standalone bare-id command is dropped (the `id=$(spt whoami)` capture was never a real pattern: env vars don't persist between agent tool calls). The one new render: the `endpoint list` SELF pin carries the Self endpoint's authored `endpoint description` (info::read_info(...).resources) when present, inline after the liveness state. whoami stays a top-level hot-path verb (parse unchanged, REQ-MSG-9).",
2026-06-20T11:21:58.9473646Z       "requiredStages": [
2026-06-20T11:21:58.9473745Z         "doc",
2026-06-20T11:21:58.9473851Z         "impl",
2026-06-20T11:21:58.9473957Z         "unit"
2026-06-20T11:21:58.9474055Z       ],
2026-06-20T11:21:58.9474162Z       "stages": {
2026-06-20T11:21:58.9474261Z         "doc": {
2026-06-20T11:21:58.9474370Z           "complete": true,
2026-06-20T11:21:58.9474472Z           "evidence": [
2026-06-20T11:21:58.9474576Z             {
2026-06-20T11:21:58.9474680Z               "path": "CONTEXT.md",
2026-06-20T11:21:58.9474787Z               "line": 707
2026-06-20T11:21:58.9474886Z             }
2026-06-20T11:21:58.9474986Z           ]
2026-06-20T11:21:58.9475087Z         },
2026-06-20T11:21:58.9478269Z         "impl": {
2026-06-20T11:21:58.9478416Z           "complete": true,
2026-06-20T11:21:58.9478543Z           "evidence": [
2026-06-20T11:21:58.9478643Z             {
2026-06-20T11:21:58.9478784Z               "path": "crates/spt/src/cli.rs",
2026-06-20T11:21:58.9478893Z               "line": 3190
2026-06-20T11:21:58.9479118Z             },
2026-06-20T11:21:58.9479208Z             {
2026-06-20T11:21:58.9479338Z               "path": "crates/spt/src/cli.rs",
2026-06-20T11:21:58.9479480Z               "line": 3218
2026-06-20T11:21:58.9479581Z             }
2026-06-20T11:21:58.9479690Z           ]
2026-06-20T11:21:58.9479785Z         },
2026-06-20T11:21:58.9479891Z         "int": {
2026-06-20T11:21:58.9480000Z           "complete": false,
2026-06-20T11:21:58.9480114Z           "evidence": []
2026-06-20T11:21:58.9480215Z         },
2026-06-20T11:21:58.9480320Z         "unit": {
2026-06-20T11:21:58.9480429Z           "complete": true,
2026-06-20T11:21:58.9480530Z           "evidence": [
2026-06-20T11:21:58.9480630Z             {
2026-06-20T11:21:58.9480749Z               "path": "crates/spt/src/cli.rs",
2026-06-20T11:21:58.9480850Z               "line": 7847
2026-06-20T11:21:58.9480949Z             },
2026-06-20T11:21:58.9481048Z             {
2026-06-20T11:21:58.9481167Z               "path": "crates/spt/src/cli.rs",
2026-06-20T11:21:58.9481267Z               "line": 7900
2026-06-20T11:21:58.9481370Z             }
2026-06-20T11:21:58.9481609Z           ]
2026-06-20T11:21:58.9481718Z         }
2026-06-20T11:21:58.9481823Z       }
2026-06-20T11:21:58.9481919Z     }
2026-06-20T11:21:58.9482018Z   ],
2026-06-20T11:21:58.9482124Z   "findings": []
2026-06-20T11:21:58.9482224Z }
